![](/img/trans.png)
[英]Maven: How to include ${project.version} in multi-module project
[英]How to include a maven module outside of the project context?
我想在某種全局項目目錄中有一個模塊,這樣我就可以將該模塊包含在使用該公共代碼的所有其他項目中。
但是,我怎么能告訴maven父pom
包含並編譯這個全局共享模塊呢? 以下不起作用:
svn/MyGlobalProject/project-commons/pom.xml //should be shared among different projects
svn/MyProject/web-parent/trunk/pom.xml //the parent pom used to build the application
svn/MyProject/web-parent/trunk/project-domain/pom.xml //submodule 1
svn/MyProject/web-parent/trunk/project-web/pom.xml //submodule 2
parent pom.xml:
<project>
<groupId>de.project</groupId>
<artifactId>project-parent</artifactId>
<packaging>pom</packaging>
<modules>
<module>project-domain</module>
<module>project-web</module>
<module>../project-commons</module> <!-- Error -->
</modules>
</project>
mvn package
導致:
Child module trunk\project-commons of trunk\pom.xml does not exist
如果在該全局項目上運行mvn install
,它將安裝在本地存儲庫中。 然后,您的其他項目可以將其作為依賴項引用:
<dependency>
<groupId>whatever</groupId>
<artifactId>project-commons</artifactId>
<version>1.0</version>
</dependency>
這種簡單方法的缺點是,在您檢出project-commons
並運行mvn install
之前,您的其他項目將無法編譯。
更高級的方法是部署可以部署全局工件的網絡可訪問存儲庫(例如Artifactory或Nexus)。 Artifactory有一個免費的社區版本。 然后,您可以在設置文件中列出此存儲庫,Maven將解析上傳到它的工件。
使用相對路徑來包含一些子模塊不是一個好習慣......你會遇到很多問題。
你不能把公共項目作為父模塊的依賴項......
通過這種方式,您將在所有子模塊中具有“公共項目”,將父項目聲明為父項...
為什么每次編譯父pom時都要編譯“常用”項目?
編輯:
你的SVN:
svn/MyGlobalProject/project-commons/pom.xml //should be shared among different projects
svn/MyProject/web-parent/trunk/pom.xml //the parent pom used to build the application
svn/MyProject/web-parent/trunk/project-domain/pom.xml //submodule 1
svn/MyProject/web-parent/trunk/project-web/pom.xml //submodule 2
父母POM.XML:
<project>
<groupId>de.project</groupId>
<artifactId>project-parent</artifactId>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>de.project</groupId>
<artifactId>project-commons</artifactId>
<version>${common.project.version}</version>
<dependency>
<dependencies>
<modules>
<module>project-domain</module>
<module>project-web</module>
</modules>
就像這樣......通過這種方式,project-domain和project-web將繼承該依賴關系,並且您將能夠在子模塊中的任何位置使用它...
比使用依賴管理可能是一個很好的改進
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.