Java 忽略maven ear插件contextRoot

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插件定

我一直在使用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,你完全正确。非常感谢你!你完全正确,法比恩。非常感谢你!