2011-05-20 131 views
1

例如,我有一個遊戲項目:如何讓Maven在子模塊目錄中運行mvn時找到兄弟模塊?

superegg/ 
    |- game/ 
    | `- pom.xml -> (a lot of jars.) 
    |- ai/ 
    | `- pom.xml 
    |- sprite/ 
    | |- egg/ 
    | | `- pom.xml -> sprite 
    | |- badguy/ 
    | | `- pom.xml -> sprite, ai 
    | `- pom.xml -> game 
    ` pom.xml 

(這裏指-->取決於

所有子模塊的快照版本,並且不安裝它們,也不部署。

現在,我想內badguy/做一些事情:

.../sprite/badguy/ $ mvn exec:java ... 

然而,行家試圖代替../../game../../ai從Maven倉庫找到依賴sprite, ai

如何使項目目錄中的Maven解決子模塊依賴關係?

我不安裝它們,因爲有太多的子模塊(儘管這裏沒有列出),完全編譯/安裝過程需要很長時間)。我也試過但沒有成功:

superegg/sprite/badguy/ $ mvn --reactor dependency:build-classpath 
    [INFO] Cannot execute mojo: build-classpath. It requires a project with an existing pom.xml, but the build is not using one. 

superegg/ $ mvn -pl sprite/badguy dependency:build-classpath 
    Missing dependencies: ... 

superegg/ $ mvn --reactor -pl sprite/badguy dependency:build-classpath 
    Project 'some-module' is duplicated in the reactor 

順便說一句,我可以建立從superegg整個項目/沒有問題。

回答

1

至於我的理解,你不能在Maven中這樣做(它是一個構建工具,而不是IDE)。我建議你執行以下操作之一:

  1. 使用版本3.1中的maven-compiler-plugin。它附帶一個增量編譯器,如果沒有任何事情發生,它將跳過編譯。這會加快你的工作。
  2. 僅構建使用-pl選項工作的那些模塊。

http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html http://java.dzone.com/articles/5-maven-tips

我還建議某種遠程桌面或SSH隧道,讓你可以使用Eclipse /的IntelliJ/NetBeans的。他們提供你所需要的。

0

如果你從IntelliJ中加載你的頂級pom,它會不斷地爲你安裝所有的模塊。即它的工作原理是你有一個已經在Maven reactor中的快照依賴關係,所以它不會打擾到你的本地存儲庫。

+2

IntelliJ很棒,但我無法在ssh/telnet中運行它。 – 2011-05-24 01:20:04

相關問題