2012-06-29 59 views
16

當我嘗試構建站點時,我當前正面臨以下Maven 3問題。我會很感激你對此的幫助。不可解析的父POM:構建Maven 3項目站點時

MVN清潔部位

.......... 
[INFO] Reactor Summary: 
[INFO] 
[INFO] Project A ......................................... SUCCESS [15.383s] 
[INFO] Project B ......................................... SUCCESS [2.232s] 
[INFO] My Site ........................................... FAILURE [0.105s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 24.769s 
[INFO] Finished at: Fri Jun 29 14:26:04 AMT 2012 
[INFO] Final Memory: 18M/150M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.1:site (default-site) on project site: SiteToolException: Unable to read local module-POM: 1 problem was encountered while building the effective model for my.com:projA:0.1-SNAPSHOT 
[ERROR] [FATAL] Non-resolvable parent POM: Could not find artifact my.com:parent-pom:pom:0.1-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 12, column 13 
[ERROR] for project my.com:projA:0.1-SNAPSHOT 
............. 

首先這裏是配置:

Apache Maven 3.0.4 (r1232337; 2012-01-17 12:44:56+0400) 
Java version: 1.7.0_04, vendor: Oracle Corporation 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.7.4", arch: "x86_64", family: "mac" 
Nexus repository: 2.0.6 

父POM:

<modelVersion>4.0.0</modelVersion> 

<name>Parent POM</name> 
<groupId>my.com</groupId> 
<artifactId>parent-pom</artifactId> 
<version>0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 

<build>       
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-site-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <reportPlugins> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-project-info-reports-plugin</artifactId> 
          <version>2.4</version> 
         </plugin>    
        </reportPlugins> 
       </configuration> 
      </plugin>    
     </plugins> 
    </pluginManagement>  
</build> 

聚集項目POM:

<modelVersion>4.0.0</modelVersion> 

<name>My Site</name> 
<groupId>my.com</groupId> 
<artifactId>site</artifactId> 
<version>0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 

<parent> 
    <groupId>my.com</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath/> 
</parent> 

<modules> 

    <module>projA</module> 
    <module>projB</module> 

</modules> 

A項目的POM:

<modelVersion>4.0.0</modelVersion> 

<name>Project A</name> 
<groupId>my.com</groupId> 
<artifactId>projA</artifactId> 
<version>0.1-SNAPSHOT</version> 

<parent> 
    <groupId>my.com</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath/>   
</parent> 

B項目的POM:

4.0.0

<name>Project B</name> 
<groupId>my.com</groupId> 
<artifactId>projB</artifactId> 
<version>0.1-SNAPSHOT</version> 

<parent> 
    <groupId>my.com</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath/>   
</parent> 

這裏就是我運行「命令mvn乾淨的網站」的文件夾結構:

./pom.xml (aggregation project) 
./projA/pom.xml (Project A) 
./projB/pom.xml (Project B) 

父POM是成功部署到NEXUS庫的mvn clean site執行之前與下面的命令mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots

最後是問題本身:

當我在運行mvn clean site後立即成功構建了parent-pom站點。如果我從本地存儲庫(〜/ .m2/repository)刪除文件夾(包含其內容)「my」(它包含父文件夾),然後嘗試使用mvn clean site構建該網站,開始。實際上,Maven從NEXUS下載父類。我比較了部署之後生成的下載文件和文件,並且已經意識到很少有文件丟失,例如接近「0.1-SNAPSHOT」文件夾的maven-metadata-local.xml。

因此,當我試圖從詹金斯運行網站建設工作時,我得到了上述錯誤,因爲父POM沒有從詹金斯運行的機器部署。

我怎麼能想出這個問題或我做錯了什麼?

謝謝。

+0

我會刪除模塊的relativePath條目,導致它是空的,所以它不需要你可以增強圖片的文件夾結構您的父pom位於何處?爲什麼父pom和聚合pom是不同的? – khmarbaise

+2

強制maven從存儲庫下載父POM,而不是在結構中查找它。顯示警告是因爲它開始認爲父母在../pom.xml中,這不是真的。關於聚合和繼承,可以有不同的父級和聚合POM,下面是鏈接:[Aggregation vs Inheritance ](http://maven.apache.org/pom.html#Inheritance_v) – tgrigoryan

+0

我知道可能有不同的聚合器和pa但它使生活變得不容易。 – khmarbaise

回答

2

你的問題不在你的pom文件中。當我構建你的聚合-pom時,Maven通常從遠程倉庫中下載父倉庫(在我從本地倉庫中刪除之後)。

試試這個:

mvn -U clean install site dependency:purge-local-repository 

此外,你可以做一些清理:

  • 從所有的人都卸下<relativePath/>
  • 從projA和ProjB刪除<version>0.1-SNAPSHOT</version><groupId>my.com</groupId>(他們繼承來自母公司)
4

正如this answer指出的那樣,網站插件中有a bug,它只查找它認爲是Maven中心的依賴關係。

我在Maven 3.0.4和站點插件3.3中遇到同樣的問題。我也有這個問題,它在運行Windows 7的開發計算機上工作,但不在運行Debian上的Jenkins的CI-Server上。

1

我得到了同樣的問題......在我的開發人員MacBook上工作,但在運行mvn site時使用maven-site-plugin:3.7在我的RHEL7上運行的Jenkins上失敗。我沒有測試降級網站插件。

我找到了另一種解決方案。我的問題是maven-project-info-reports-plugin,特別是目標dependencies。如果我跳過目標-Dmpir.skip=true我的網站得到的生成(沒有依賴關係:(報告)。

相關問題