2012-02-26 92 views
0

我們安裝了Archiva,默認情況下設置了兩個存儲庫。Snapshot存儲庫問題

這裏是我的的settings.xml

<server> 
    <id>mycompany-release</id> 
    <username>admin</username> 
    <password>******</password> 
</server> 
<server> 
    <id>mycompany-snapshots</id> 
    <username>admin</username> 
    <password>******</password> 
</server> 

<mirror> 
    <id>mycompany-release</id> 
    <url>http://X.X.X.X:8080/archiva/repository/internal/</url> 
    <mirrorOf>external:*</mirrorOf> 
</mirror> 
<mirror> 
    <id>mycompany-snapshots</id> 
    <url>http://X.X.X.X:8080/archiva/repository/snapshots/</url> 
    <mirrorOf>apache.snapshots</mirrorOf> 
</mirror> 

<profile> 
    <id>repo</id> 
    <repositories> 
     <repository> 
      <id>mycompany-release</id> 
      <url>http://X.X.X.X:8080/archiva/repository/internal/</url> 
      <releases> 
        <enabled>true</enabled> 
      </releases> 
      <snapshots> 
        <enabled>false</enabled> 
      </snapshots> 
    </repository> 
    <repository> 
      <id>mycompany-snapshots</id> 
      <url>http://X.X.X.X:8080/archiva/repository/snapshots/</url> 
      <releases> 
        <enabled>false</enabled> 
      </releases> 
      <snapshots> 
        <enabled>true</enabled> 
      </snapshots> 
    </repository> 
    </repositories>  
</profile> 

<activeProfiles> 
    <activeProfile>repo</activeProfile> 
</activeProfiles> 

我有我用來設置常見的配置爲所有項目父項目。此父項目的版本爲1-SNAPSHOT。所以,在所有其他項目中,父節指向版本爲1-SNAPSHOT的父項目(不含相對路徑元素)。如果我將我的父項目部署到存檔庫,它就在那裏。如果我嘗試在另一個項目上運行任何命令(如mvn clean),它將在部署期間安裝父項目,因此它可以工作。但是,如果我從我的本地庫手動刪除父項目並嘗試運行相同的命令時,Maven將返回一個錯誤說:

非解析父POM:找不到神器 com.mycompany:家長:POM :1快照myCompany的釋放 (HTTP:// XXXX:8080/archiva /庫/內部/)和 'parent.relativePath' 在錯誤的地方POM點

似乎父項目在發佈版本庫中查找時,我期望它在快照庫中查找。

感謝您的幫助

編輯:這裏是孩子POM的一部分:

<parent> 
    <groupId>com.mycompany</groupId> 
    <artifactId>Parent</artifactId> 
    <version>1-SNAPSHOT</version> 
</parent> 

<groupId>com.mycompany</groupId> 
<artifactId>child</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

如果刪除父節和運行mvn幫助:有效-POM,我得到(僅存放區被示出):

<repositories> 
    <repository> 
     <releases> 
     <enabled>true</enabled> 
     </releases> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <id>mycompany-release</id> 
     <url>http://X.X.X.X:8080/archiva/repository/internal/</url> 
    </repository> 
    <repository> 
     <releases> 
     <enabled>false</enabled> 
     </releases> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
     <id>mycompany-snapshots</id> 
     <url>http://X.X.X.X:8080/archiva/repository/snapshots/</url> 
    </repository> 
    <repository> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <id>central</id> 
     <name>Maven Repository Switchboard</name> 
     <url>http://repo1.maven.org/maven2</url> 
    </repository> 
    </repositories> 

注:如果我更換由1父版本(而不是1-SNAPSHOT),它的工作原理。

+0

請爲子項目提供'pom.xml'。 – 2012-02-26 20:07:46

+0

@AndrewLogvinov謝謝,我編輯了這篇文章。 – 2012-02-26 20:26:20

+0

我會說這是剩下的需要=)你可以執行'mvn help:effective-pom'和後期輸出(''部分應該足夠了)。 – 2012-02-27 04:38:50

回答

1

我發現是什麼問題。在settings.xml中問題的行是:

<mirrorOf>external:*</mirrorOf> 

事實上,就引起了Maven來考慮myCompany的釋放庫爲myCompany的快照倉庫的一面鏡子。但是,此存儲庫不會鏡像快照。我換成這一行:

<mirrorOf>central</mirrorOf> 

現在,myCompany的釋放信息庫鏡像只能Maven的中央存儲庫,而不是myCompany的快照庫,所以它查找在mycompany-快照文物快照存儲庫。

感謝安德魯的幫助!我現在沒有可能顯示完整的日誌。

+1

很高興聽到! – 2012-02-27 18:36:06