使用Maven生成jboss-deployment.struct.xml

问题描述 投票:0回答:1

我目前正在将一些 Java 项目迁移到 Maven 结构,但遇到了问题。旧的 EAR 项目包含

jboss-deployment-structure.xml
,因此我已将其移至
<EAR-ROOT>/src/main/application/META-INF
下的 Maven 项目。当我构建一个项目时,描述符被正确地放置在 EAR 文件中,但由于它是 Maven 项目,我正在考虑使用 Maven 生成
jboss-deployment-structure.xml
,因为它包含许多对 jar 库的引用。现在当我例如在
pom.xml
中更改一些Java库版本,我还必须在
jboss-deployment-structure.xml
中手动更改它。

我的

jboss-deployment-structure.xml
的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <!-- Make sub deployments isolated by default, so they cannot see each others 
        classes without a Class-Path entry -->
    <ear-subdeployments-isolated>true</ear-subdeployments-isolated>
    <deployment>
        <resources>
            <resource-root path="lib/apache/commons-lang3-3.3.2.jar" />
            <resource-root path="lib/joda/joda-time-2.0.jar" />
        </resources>
    </deployment>
</jboss-deployment-structure>

所以我的问题 - 是否可以使用 Maven 生成

jboss-deployment-structure.xml
?我已经搜索过一些合适的插件,但没有找到。描述符可以通过其他方式生成吗?

提前致谢。

java maven jboss
1个回答
0
投票

自动生成 jboss-deployment-struct.xml 的一种方法是使用 Maven 资源过滤功能,该功能允许您在构建过程中将资源文件中的占位符替换为 Maven 属性中的相应值。

您首先需要在 jboss-deployment-struct.xml 中包含库版本的占位符,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <!-- Make sub deployments isolated by default, so they cannot see each others 
        classes without a Class-Path entry -->
    <ear-subdeployments-isolated>true</ear-subdeployments-isolated>
    <deployment>
        <resources>
            <resource-root path="lib/apache/commons-lang3-${commons.lang.version}.jar" />
            <resource-root path="lib/joda/joda-time-${joda.time.version}.jar" />
        </resources>
    </deployment>
</jboss-deployment-structure>

接下来,您将在 pom.xml 中定义这些占位符:

<properties>
    <commons.lang.version>3.3.2</commons.lang.version>
    <joda.time.version>2.0</joda.time.version>
</properties>

最后,您需要配置项目以使用 Maven 资源过滤。您可以通过将 resources 元素添加到 pom.xml 中的构建配置来完成此操作:

<build>
    <resources>
        <resource>
            <directory>src/main/application/META-INF</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...
</build>

此设置将在构建项目时将 jboss-deployment-struct.xml 中的占位符替换为 Maven 属性中的相应值。

每当更改库的版本时,请记住更新 pom.xml 文件的属性部分中的版本号,并且 jboss-deployment-struct.xml 将在构建过程中自动更新。

© www.soinside.com 2019 - 2024. All rights reserved.