我对Maven项目结构有些新意。我正在创建一个项目,这将有两个罐子。这两个jar都不依赖于彼此,但是,它们将使用一些相同的库,并且我创建了两个辅助类(一个用于日志记录),将在两者中使用。
就项目结构而言,我正在遵循本指南:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
我当前的项目只有一个模块。我正在使用IntelliJ IDE创建我的build.xml(使用ANT)来创建我的Jars。但是,IntelliJ build.xml不起作用,我不得不进行一些手动编辑,让它构建两个jar。我相信如果每个罐子都在它自己的模块中,这将得到解决。此外,根据以下内容,它们似乎应该是http://www.jetbrains.com/idea/webhelp/module.html
这是我有点困惑的地方。如果我为第二个jar创建第二个模块,我该如何处理两个模块共享的类?每当我去创建一个新模块时,IntelliJ都会为新模块提供它自己的src / path。
正如我所说,我是Maven项目结构的新手。我也很擅长使用build.xml构建jar。如果我完全走错了路,请告诉我,以便我能尽早解决这个问题。
提前致谢。
答案 0 :(得分:5)
创建一个多模块项目(x),其中包含一个带有packaging = pom
的pom.xml<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>x</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>x1</module>
<module>x2</module>
</modules>
</project>
和2个常规(jar)项目(x1和x2)。这就是项目结构应该是什么样子
x
x1
...
pom.xml
x2
...
pom.xml
pom.xml
主项目pom应包含两个模块共有的依赖项。嵌套项目poms应该引用父项。
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>test</groupId>
<artifactId>x</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>x1</artifactId>
</project>
在此处查看更多http://maven.apache.org/guides/mini/guide-multiple-modules.html
答案 1 :(得分:2)
如果你要以maven的方式做事,你应该记住每个(maven-)项目只构建一个工件。因此,如果你想构建两个jar,你将需要两个maven项目(p1,p2),每个项目都有自己的pom.xml。
如果你有一些这些项目使用的类,他们将不得不去他们自己的maven项目来构建他们自己的模块jar(p3)。 p3将作为依赖包含在p1和p2中。
要一次性构建这些jarr,您可以使用Evgeniy Dorofeev建议的模块布局