2011-06-03 56 views
12

我在一個Maven 3項目中定義了一個依賴pom.xml。依賴關係是如下:爲什麼maven在錯誤的回購中尋找神器?

<repository> 
    <id>java.net</id> 
    <name>java.net</name> 
    <url>http://download.java.net/maven/2</url> 
</repository> 

工件確實存在於所述存儲庫:

<dependency> 
    <groupId>org.glassfish.web</groupId> 
    <artifactId>el-impl</artifactId> 
    <scope>runtime</scope> 
    <version>2.2</version> 
</dependency> 

Repostory在POM描述如下。 It's easy to check。儘管如此,Maven正在試圖從repo1.maven.org獲得神器。 這可能是什麼原因?也許我在定義倉庫訪問時犯了一些嚴重錯誤?其他依賴似乎沒有問題。

Plugin org.mortbay.jetty:maven-jetty-plugin:6.1.26 or one of its 
dependencies could not be resolved: Could not find artifact 
org.glassfish.web:el-impl:jar:2.2 
in central (http://repo1.maven.org/maven2) 

回答

17

您定義的repository用於依存關係,但不是對於plugins。因此錯誤。

爲了解決這個問題,你需要定義pluginRepositories

<project> 
    <!-- ... --> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>{repo.id}</id> 
      <url>{repo.url}</url> 
     </pluginRepository> 
    </pluginRepositories> 
</project> 

至於你應該指定 - 在pom.xml中或settings.xml中,閱讀this SO post

1

你需要檢查你的Maven settings.xml(查找到Maven的文件夾:M2_HOME/conf)。
默認存儲庫在其中定義,並且Maven中央存儲庫優先。

定義你的倉庫在Maven的settings.xml這樣的:

<profiles> 
<profile> 
    ... 
    <repositories> 
    <repository> 
     <id>Java Net</id> 
     <name>Java Net</name> 
     <releases> 
     <enabled>false</enabled> 
     <updatePolicy>always</updatePolicy> 
     <checksumPolicy>warn</checksumPolicy> 
     </releases> 
     <snapshots> 
     <enabled>true</enabled> 
     <updatePolicy>never</updatePolicy> 
     <checksumPolicy>fail</checksumPolicy> 
     </snapshots> 
     <url>http://download.java.net/maven/2</url> 
     <layout>default</layout> 
    </repository> 
    </repositories> 
    <pluginRepositories> 
    ... 
    </pluginRepositories> 
    ... 
</profile> 

你也許可以覆蓋與您的默認的Maven中心存儲庫的位置,如果你不想做太多的配置。

乾杯!

相關問題