Java 忽略maven ear插件contextRoot
我一直在使用maven ear插件创建ear包,并使用自定义contextRoot生成application.xml(一切正常)。现在我想创建两个ear bundle并将它们部署在不同的上下文路径下,所以我定义了两个执行的插件。但由于某些原因,maven ear插件忽略了contextRoot属性,并且在生成的application.xml中,它在两个ear中使用了artifactId而不是contextRoot(因此它们具有相同的上下文根“app ui”)。 以下是我的maven ear插件定义:Java 忽略maven ear插件contextRoot,java,maven,maven-ear-plugin,Java,Maven,Maven Ear Plugin,我一直在使用maven ear插件创建ear包,并使用自定义contextRoot生成application.xml(一切正常)。现在我想创建两个ear bundle并将它们部署在不同的上下文路径下,所以我定义了两个执行的插件。但由于某些原因,maven ear插件忽略了contextRoot属性,并且在生成的application.xml中,它在两个ear中使用了artifactId而不是contextRoot(因此它们具有相同的上下文根“app ui”)。 以下是我的maven ear插件定
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>app1</id>
<phase>package</phase>
<goals>
<goal>ear</goal>
</goals>
<configuration>
<finalName>app1</finalName>
<modules>
<webModule>
<groupId>com.x.y</groupId>
<artifactId>app-ui</artifactId>
<contextRoot>/app1-ui</contextRoot>
</webModule>
</modules>
</configuration>
</execution>
<execution>
<id>app2</id>
<phase>package</phase>
<goals>
<goal>ear</goal>
</goals>
<configuration>
<finalName>app2</finalName>
<modules>
<webModule>
<groupId>com.x.y</groupId>
<artifactId>app-ui</artifactId>
<contextRoot>/app2-ui</contextRoot>
</webModule>
</modules>
</configuration>
</execution>
maven耳朵插件
2.10
附件1
包裹
耳朵
附件1
com.x.y
应用程序界面
/应用程序1用户界面
附件2
包裹
耳朵
附件2
com.x.y
应用程序界面
/应用程序2用户界面
有什么建议吗?问题是您只生成一次
应用程序.xml
,而您需要两个应用程序.xml
。为此,您还需要在maven生命周期的generate resources
阶段执行两次绑定的generate application xml
目标,以便两次生成application.xml
文件(在两个不同的文件夹中,最好是^^^),并使用以下两种不同的配置:
appxml-app1
产生资源
生成应用程序xml
target/app1/META-INF
com.x.y
应用程序界面
/app1 ui
附件1
包裹
耳朵
目标/附件1
附件1
com.x.y
应用程序界面
appxml-app2
产生资源
生成应用程序xml
target/app2/META-INF
com.x.y
应用程序界面
/应用程序2用户界面
附件2
包裹
耳朵
目标/附件2
附件2
com.x.y
应用程序界面
为了改进这一点,您可以使用变量来确保与app1等相关的两次执行的文件夹相同,这只是一个草稿;) 问题是只生成一次
application.xml
,而需要两个application.xml
。为此,您还需要在maven生命周期的generate resources
阶段执行两次绑定的generate application xml
目标,以便两次生成application.xml
文件(在两个不同的文件夹中,最好是^^^),并使用以下两种不同的配置:
appxml-app1
产生资源
生成应用程序xml
target/app1/META-INF
com.x.y
应用程序界面
/应用程序1用户界面
附件1
包裹
耳朵
目标/附件1
附件1
com.x.y
应用程序界面
appxml-app2
产生资源
生成应用程序xml
target/app2/META-INF
com.x.y
应用程序界面
/应用程序2用户界面
附件2
包裹
耳朵
目标/附件2
附件2
com.x.y
应用程序界面
为了改进这一点,您可以使用变量来确保与app1等相关的两次执行的文件夹相同,这只是一个草稿;) 向其中一个执行添加一个
分类器
,这意味着向其中一个执行配置添加'Second',然后重试。我尝试添加分类器,但结果仍然相同。它只是在ear文件名中添加了分类器。你可以把一个示例项目或真实项目放在某个地方,这样就更简单了。当然可以。我把它放在bitbucket上,你可以克隆它:git克隆首先构建应用程序ui,然后构建应用程序ear。app1.ear和app2.ear都将被创建,并且都将在META-INF/application.xml中具有相同的上下文根。向其中一个执行添加分类器
,这意味着向其中一个执行配置添加“Second”,然后重试。我尝试添加分类器,但结果仍然相同。它只是在ear文件名中添加了分类器。你可以把一个示例项目或真实项目放在某个地方,这样就更简单了。当然可以。我把它放在bitbucket上,你可以克隆它:git克隆首先构建应用程序ui,然后构建应用程序ear。app1.ear和app2.ear都将被创建,并且在META-INF/application.xml中都有相同的上下文根。Fabien,你完全正确。非常感谢你!你完全正确,法比恩。非常感谢你!