2016-08-19 176 views
0

在使用maven構建項目期間,在更新其父項目的版本後,我遇到了生成javadoc的問題。Maven搜索site.xml缺失的英語語言環境

2016-08-18 16:06:44.559 [INFO] <<< maven-javadoc-plugin:2.10.3:aggregate < generate-sources @ org.eclipse.scout.rt <<< 
2016-08-18 16:06:44.560 [DEBUG] building maven31 dependency graph for org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT with Maven31DependencyGraphBuilder 
2016-08-18 16:06:44.560 [DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=0, ConflictMarker.markTime=0, ConflictMarker.nodeCount=1, ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=0, ConflictIdSorter.conflictIdCount=0, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=0, ConflictResolver.conflictItemCount=0, DefaultDependencyCollector.collectTime=0, DefaultDependencyCollector.transformTime=0} 
2016-08-18 16:06:44.561 [DEBUG] org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT 
2016-08-18 16:06:44.636 [DEBUG] canGenerateReport = true for project MavenProject: org.eclipse.scout.rt:org.eclipse.scout.rt:6.0.0-SNAPSHOT @ /home/<REDACTED>/workspace/org.eclipse.scout.rt.branch-6.0_nightly-sitedocs/org.eclipse.scout.rt/pom.xml 
2016-08-18 16:06:44.662 [DEBUG] Computing decoration model of org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT for locale en 
2016-08-18 16:06:44.662 [DEBUG] No site descriptor found for org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT 
2016-08-18 16:06:44.663 [DEBUG] Looking for site descriptor of level 1 parent project: org.eclipse.scout:maven_rt_plugin_config-master:pom:2.0.7 
2016-08-18 16:06:44.665 [DEBUG] Using transporter WagonTransporter with priority -1.0 for <REDACTED> 
2016-08-18 16:06:44.666 [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for <REDACTED> 
2016-08-18 16:06:44.666 [INFO] Downloading: <REDACTED>/org/eclipse/scout/maven_rt_plugin_config-master/2.0.7/maven_rt_plugin_config-master-2.0.7-site_en.xml 
2016-08-18 16:06:45.289 [DEBUG] Writing tracking file /home/<REDACTED>/workspace/org.eclipse.scout.rt.branch-6.0_nightly-sitedocs/.repository/org/eclipse/scout/maven_rt_plugin_config-master/2.0.7/maven_rt_plugin_config-master-2.0.7-site_en.xml.lastUpdated 
2016-08-18 16:06:45.597 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.5.1:site (default-cli) on project org.eclipse.scout.rt: SiteToolException: The site descriptor cannot be resolved from the repository: ArtifactResolutionException: Unable to locate site descriptor: Could not transfer artifact org.eclipse.scout:maven_rt_plugin_config-master:xml:site_en:2.0.7 from/to AAA.libs.release (<REDACTED>): Access denied to: <REDACTED>/org/eclipse/scout/maven_rt_plugin_config-master/2.0.7/maven_rt_plugin_config-master-2.0.7-site_en.xml , ReasonPhrase:Forbidden. 
2016-08-18 16:06:45.598 [ERROR] org.eclipse.scout:maven_rt_plugin_config-master:xml:2.0.7 
2016-08-18 16:06:45.598 [ERROR] 
2016-08-18 16:06:45.598 [ERROR] from the specified remote repositories: 
2016-08-18 16:06:45.598 [ERROR] AAA.libs.release (<REDACTED>, releases=true, snapshots=false), 
2016-08-18 16:06:45.599 [ERROR] AAA.libs.snapshots (<REDACTED>, releases=false, snapshots=true), 
2016-08-18 16:06:45.599 [ERROR] eclipse.release (https://repo.eclipse.org/content/groups/releases/, releases=true, snapshots=false), 
2016-08-18 16:06:45.599 [ERROR] eclipse.snapshot (https://repo.eclipse.org/content/groups/snapshots/, releases=true, snapshots=true), 
2016-08-18 16:06:45.599 [ERROR] remote-repos (<REDACTED>, releases=true, snapshots=false) 

正如你所看到的,它會嘗試下載maven_rt_plugin_config主-2.0.7-的site_ 的.xml,這實際上並不存在。然而,確實存在這樣一個沒有_en後綴的xml ...

據我所知,我沒有指定任何語言環境,並且似乎沒有與站點或javadoc生成相關的父項目中的更改。

爲什麼Maven不會回退到默認的語言環境?

回答

0

此問題的原因是我們的存儲庫(JFrog Artifactory)的行爲: 請求的存儲庫是virtual repository,它聚合了多個物理存儲庫。

它回覆一個403(禁止)如果請求的神器不能在用戶訪問該存儲庫中找到 - 有用戶不訪問存在他人。然後,Maven似乎停止在同一個存儲庫中查找替代文件。

JFrog Artifactory存在一個feature request來改變行爲,但是(寫作時)沒有人正在處理它。

我們的解決方案是將settings.xml更改爲直接指向存儲庫。然後,Maven將收到英文語言環境版本(site_en.xml)的404(Not Found),並正確回退到默認site.xml。當用403

1

在這種情況下,可能會幫助提供給其他試圖弄清楚爲什麼Maven是尋找從父項目site.xmlsite_en.xml和失敗時的願望只是其他幾個Maven插件也表現出這個問題使用默認設置:

使用SpringBoot時遇到類似的問題。 mvn clean site失敗嘗試從中央(https://repo.maven.apache.org/maven2)與轉移spring-boot-starter-parent:xml:site_en:1.4.0.RELEASE

repo.maven.apache.org:443 repo.maven.apache.org/xxxx失敗: 連接超時:接

當項目配置爲使用公司存儲庫時發生這種情況,但在使用maven central direct時未發生。它看來,在公司存儲庫存在的情況下,請求被代理爲安全請求。對中央系統的安全請求失敗,出現「超時」,無法構建。如果請求不安全,「未找到」將從中央返回,maven將繼續使用默認設置。所以在這種情況下,404會很好(按照需要繼續默認)其他錯誤代碼不好(構建失敗)。

周圍有這樣的幾種方法:

  • 安裝文件到你的本地庫(黑客)公司回購服務器上
  • 配置變化(可能是真正的解決,如在接受描述相同答案)
  • 配置代理在Maven設置settings.xml文件

這裏是settings.xml代理配置的例子:

<proxy> 
    <active>true</active> 
    <protocol>http</protocol> 
    <host>my.corporate.proxy</host> 
    <port>myPort</port> 
    <nonProxyHosts>*.my.corporate.domain|*.my.subsidiary.domain</nonProxyHosts> 
</proxy>