2010-04-23 63 views
0

我正在爲與Maven啓用的Hibernate擴展相關的項目收到構建錯誤。 - 這是一個非常基本的應用程序,我可以通過手動安裝一些必要的器物來解決我的Linux機器這個問題:用於Windows的Hibernate的Maven構建問題

mvn install:install-file -DgroupId=javassist -DartifactId=javassist 
-Dversion=3.9.0 -Dpackaging=jar -Dfile=foo.jar 

制定出(Hibernate作爲一組需要DEPS的)。

但是在Windows的情況下事情是不同的。如何手動將依賴項添加到Windows上的Maven?

1) org.hibernate:hibernate:jar:3.3.2 

     Try downloading the file manually from the project website. 

     Then, install it using the command: 
      mvn install:install-file -DgroupId=org.hibernate -DartifactId=hibernate -Dversion=3.3.2 
-Dpackaging=jar -Dfile=/path/to/file 

    2) javassist:javassist:jar:3.9.0 

我可以在Windows機器上爲我的同事自動執行此繁瑣的手動依賴項安裝嗎?是否有任何有用的工具或GUI可以執行這些任務?最好的辦法是Maven自動完成這一切。我不太熟悉它。

感謝您的回答。

回答

1

首先,您可以在Windows中以手動方式將工件安裝到本地Maven存儲庫,方法與您在Linux機器上完全相同。

理想情況下,正如你所說,Maven會爲你做好辛苦的工作。通常你不必手動安裝jar:對於大多數的庫,Maven會知道每個jar有什麼依賴關係。默認情況下,Maven將檢查the central repository和其他幾個。要訪問罐子在其他存儲庫,只需將它們添加到您的POM,如下:

<project> 
     ... 
     <repositories> 
      <repository> 
       <id>jboss.maven2.repo</id> 
       <name>JBoss Maven Repo</name> 
       <url>http://repository.jboss.com/maven2</url> 
      </repository> 
      <!-- other repositories here --> 
     </repositories> 
     ... 
    </project> 

上述JBoss的回購協議是一個很好的補充。它有很多常見的罐子,包括上面提到的休眠版本的罐子。引用它在你的pom.xml這樣的:

<dependencies> 
    <!-- ... --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.2.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.3.0.ga</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 
</dependencies> 

一旦你已經添加了這些依賴關係,Maven的也將下載這些庫依賴於庫,等等(包括在您的示例了Javassist庫)。

最後,在另一個答覆中提到,如果你有很多的第三方庫的安裝爲您的項目沒有在其他存儲庫中存在,您可能需要安裝一個倉庫管理器一樣NexusArtifactory,或Archiva ,這將允許您通過基於Web的界面執行您提到的安裝命令。

+0

這不是hibernate的正確依賴(這裏提到的只是一個pom)。 – 2010-04-23 16:51:05

+0

好點:):更新。新版本已經過測試。感謝您的更正 – Daniel 2010-04-24 02:22:25

1
  1. 您可以使用mvn install:install-file你的Windows機器上安裝的依賴到本地資源庫以及
  2. 你可能想改變你的settings.xml添加額外的存儲庫中的鏡子,這樣你就不會依靠只是中央。查看jboss,java.net等。您還可以設置您自己的存儲庫管理器(如Nexus)來處理鏡像,存儲團隊的工件等;然後將每個開發人員機器指向您的存儲庫。

有關更多信息,請參閱Repository Management with NexusReasons to use a Repository Manager

1

我能夠通過手動安裝一些必需的工件在我的Linux機器上解決此問題(...)

手動安裝的神器是一個不好的做法(它使您的構建非便攜爲您遇到)和,實際上,沒有任何理由來安裝你正在尋找手動文物,它們是兩者均可在JBoss repository。因此,將它添加到 「申報」 資料庫列表:

<project> 
    ... 
    <repositories> 
    <repository> 
     <id>repository.jboss.org</id> 
     <name>Jboss Repository for Maven</name> 
     <url>http://repository.jboss.org/maven2</url> 
    </repository> 
    </repositories> 
    ... 
</project> 

然後聲明如下的依賴關係:

<dependencies> 
    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>3.3.2.GA</version> 
    </dependency> 
    <dependency> 
    <groupId>javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.9.0.GA</version> 
    </dependency> 
</dependencies> 

注意依賴於hibernate-corehttp://repository.jboss.org/maven2/org/hibernate/hibernate/3.3.2.GA/僅包含POM)。