Maven 构建多个JAR子集
我们目前正在工作的Maven结构构建了一个EAR,如下所示 工作空间Maven 构建多个JAR子集,maven,maven-3,Maven,Maven 3,我们目前正在工作的Maven结构构建了一个EAR,如下所示 工作空间 >parent proj (containing root pom.xml) >ear proj >web proj >jar1 >jar2 >jarN >parent proj (containing root pom.xml) >ear projects >ear1 >ear2
>parent proj (containing root pom.xml)
>ear proj
>web proj
>jar1
>jar2
>jarN
>parent proj (containing root pom.xml)
>ear projects
>ear1
>ear2
>web projects
>web1
>web2
>component jars
>jar1
>jar2
>jarN
我们现在需要对其进行定制,以便使用JAR组合构建多个EAR(用于不同的需求)
因此,建议的工作区现在将如下所示:
<profiles>
<profile>
<id>ear1</id>
<modules>
<module>components/jar1</module>
<module>components/jar2</module>
<module>components/jar4</module>
<module>web/web2</module>
<module>ear/ear1</module>
</modules>
</profile>
</profiles>
工作空间
>parent proj (containing root pom.xml)
>ear proj
>web proj
>jar1
>jar2
>jarN
>parent proj (containing root pom.xml)
>ear projects
>ear1
>ear2
>web projects
>web1
>web2
>component jars
>jar1
>jar2
>jarN
在ear1项目pom.xml中,我们想要挑选我们需要的web项目和jar项目
问题是:
a) 上述结构是否可行?因为名为“ear项目”、“web项目”、“组件JAR”的文件夹实际上没有POM,也没有构建任何内容
b) 是否可以使用同一文件夹外的人工制品构建ear1 pom.xml
早期的项目ear1和jar1和jar2并行,并且都是根pom.xml的子模块。但在建议的结构中,ear1不是使用并行模块构建的,而是使用../web projects/web1../component jars/jar1等模块构建的
c) 有没有更好的方法来实现这一点?提供的工作区看起来不错。为了清楚起见,我将它放在这里(注意,ear、web和组件都是空目录) 由于项目依赖关系是从存储库(本地或远程)获取的,所以模块不在同一级别上是没有问题的。您应该将它们声明为常规依赖项。例如,在ear1中,可以指定:
<dependencies>
<dependency>
<groupId>_your_groupId_</groupID>
<artifactId>_jar1_artifactId_</artifactId>
<version>_jar1_version_</version>
<dependency>
<dependency>
<groupId>_your_groupId_</groupID>
<artifactId>_web1_artifactId_</artifactId>
<version>_web1_version_</version>
<dependency>
</dependencies>
_你的群组ID_
_jar1_人工关节_
_jar1_版本_
_你的群组ID_
_web1_-artifactId_
_web1_版本_
我不确定我是否完全理解你的需求,但我会尽量描述我会做什么
可以使用配置文件指定要生成的项目。例如,假设ear1项目依赖于jar1、jar2、jar4和web2项目。在这种情况下,可以在根pom.xml文件中指定如下配置文件:
<profiles>
<profile>
<id>ear1</id>
<modules>
<module>components/jar1</module>
<module>components/jar2</module>
<module>components/jar4</module>
<module>web/web2</module>
<module>ear/ear1</module>
</modules>
</profile>
</profiles>
耳1
组件/jar1
组件/jar2
组件/jar4
web/web2
耳朵/耳朵1
如果您运行
mvn包-p ear1
,那么Maven将只构建配置文件
部分中指定的模块。a)是的,没有问题b)您可以更具体一点,并添加一个示例来说明您的意思吗?c) 可能:)@AndrewLogvinov:updated我已经在使用配置文件了,我的未知位是将所需模块指定为component/jar1
,而不是jar1
。这看起来像我需要的,将测试它并让你知道。谢谢