2013-03-22 88 views
15

元,我有我的項目很簡單.pom文件指向它:找不到本地機器我有Maven倉庫安裝了Artifactory的在當地

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>MYGROUP</groupId> 
    <artifactId>NAME</artifactId> 
    <packaging>jar</packaging> 
    <version>VERSION</version> 
    <build> 
     <sourceDirectory>SRCFOLDER</sourceDirectory> 
     <testSourceDirectory>TESTFOLDER</testSourceDirectory> 

     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 

    </build> 

    <repositories> 
     <repository> 
      <id>local-artifactory</id> 
      <name>Artifactory</name> 
      <url>http://localhost:8081/artifactory/repo</url> 
      <layout>default</layout> 
      <releases> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
       <checksumPolicy>warn</checksumPolicy> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
       <checksumPolicy>warn</checksumPolicy> 
      </snapshots> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>local-artifactory-plugins</id> 
      <name>Artifactory Plugins</name> 
      <url>http://localhost:8081/artifactory/repo</url> 
     </pluginRepository> 
    </pluginRepositories> 

<dependencies> 
    <dependency> 
     <groupId>MYGROUP</groupId> 
     <artifactId>DEPENDENCY1</artifactId> 
     <version>bla-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>MYGROUP</groupId> 
     <artifactId>DEPENDENCY2</artifactId> 
     <version>bla-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 
</project> 

所以我有地方 - 聲明的原創存儲庫,意在每次都會重新載入所有內容。另外我有幾個依賴關係,它們是SNAPSHOTS。

現在我使用的是maven 3.0.5,當我編譯它時它工作正常,但它並不是刷新快照。決不。永遠。日誌文件看起來是這樣的:

[DEBUG] Could not find metadata MYGROUP:DEPENDENCY1:bla-SNAPSHOT/maven-metadata.xml in local (/opt/myuser/.m2/repository) 
[DEBUG] Using connector WagonRepositoryConnector with priority 0 for http://localhost:8081/artifactory/repo 
Downloading: http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/maven-metadata.xml 
Downloaded: http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/maven-metadata.xml (314 B at 13.9 KB/sec) 
[DEBUG] Writing resolution tracking file /opt/myuser/.m2/repository/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/resolver-status.properties 
[DEBUG] Could not find metadata MYGROUP:DEPENDENCY1:bla-SNAPSHOT/maven-metadata.xml in local (/opt/myuser/.m2/repository) 
[DEBUG] Skipped remote update check for MYGROUP:DEPENDENCY1:bla-SNAPSHOT/maven-metadata.xml, already updated during this session. 

所以它不斷地抱怨說,它無法找到本地的maven-medatada.xml當然,他是完全正確 - 它不存在。並沒有做任何事情。

所以我試圖使用依賴:purge-local-repository來清除本地庫存並猜測是什麼?顯然它不能清除它,因爲每個工件中都沒有maven-metadata.xml,這是多麼神奇的功能!

.jar和.pom的每個.m2工件目錄包含maven-metadata-local-artifactory.xml(帶有來自artifactory的maven-metadata.xml的正確副本,current),_mave.repositories和resolver- status.properties。

Maven剛剛開箱即用,在.m2中沒有配置,並且/ conf文件夾中的配置是默認的,沒有任何更改。

更新:我剛從artifactory手動下載了maven-metadata.xml,並將其作爲maven-metadata.xml放置在.m2中以進行依賴 - 沒有任何作用,它仍然「缺失」它。所以我不知道它對我的要求了。它只是無法更新依賴項,因爲「在此會話期間已更新」。那麼我不知道它是什麼更新,但顯然是別的東西。

UPDATE2:Maven的metadata.xml中的服務器上的內容:

<metadata> 
    <groupId>MYGROUP</groupId> 
    <artifactId>DEPENDENCY1</artifactId> 
    <version>bla-SNAPSHOT</version> 
    <versioning> 
     <snapshot> 
      <buildNumber>1</buildNumber> 
     </snapshot> 
     <lastUpdated>20130322155759</lastUpdated> 
    </versioning> 
</metadata> 
+0

你如何將你的工件放入你的工藝品?你使用'mvn deploy'嗎? – ben75 2013-03-22 11:28:08

+0

不,我正在使用ant/ivy和ivy:使用maven風格的存儲庫結構發佈它。是不是重要? – Eugene 2013-03-22 11:33:29

+0

我想這是爲什麼元數據不存在。我從不使用ant/ivy在artifactory上部署maven artifact。無論如何:'mvn deploy'會將jar +元數據放入artifactory中,這是一條路。 (你也可以使用'mvn install:install-file'與'-DpomFile = your-pom.xml'或者最糟糕的如果你沒有pom文件:'-DgeneratePom = true' – ben75 2013-03-22 11:40:23

回答

5

從Maven的元數據的XML文件,它看起來像你正在使用非唯一快照存儲庫。 Maven 3不支持使用TIMESTAMP-BUILDNUMBER而不是SNAPSHOT的非唯一唯一快照pom文件。你有:

http://localhost:8081/artifactory/repo/MYGROUP/DEPENDENCY1/bla-SNAPSHOT/DEPENDENCY1-bla-XXXXX-Y.pom 

file?

+0

是的,我已經知道了,在artifactory中改變它,一切正常。不管怎麼說,還是要謝謝你! – Eugene 2013-04-08 16:00:29

13

我的maven抱怨說,它無法在本地找到元數據,等等......基本上,發生了什麼事是我設法在mid-maven-build中拔掉了我的電源線,並在相關的本地.m2中將其元數據子目錄被損壞。我進去了,從他們的.m2位置刪除了有問題的文物,並重新嘗試了構建。一切正常。只是想給那些和我有類似問題的人留下這個信息,但卻偶然發現了你的問題。

+0

這只是一個解決方法,而不是解決方法。你不能直接刪除'.m2'文件夾幾次,以使構建工作。 – 2017-03-27 09:25:40

+3

我認爲他不認爲他是一個常規修復 – 2017-05-23 10:12:25