gpt4 book ai didi

java - 如何在 maven 发布后自动更新 application.xml 中的版本

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:54 26 4
gpt4 key购买 nike

application.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
<description>DESCRIPTION</description>
<display-name>xxxsystem-ear</display-name>
<module>
<ejb>xxxsystem-ejb-3.1.1-SNAPSHOT.jar</ejb>
</module>
<module>
<web>
<web-uri>xxxsystem-web-3.1.1-SNAPSHOT.war</web-uri>
<context-root>/xxxsystem</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>

在我运行之后:mvn 发布:干净mvn 发布:准备mvn 发布:执行

所以我必须在 xml 文件中手动将 .jar 和 .war 的版本更改为 3.1.2。

有办法告诉 maven 为我更改此文件中的版本吗?

我必须对 jboss-deployment-structure.xml 做同样的事情

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</deployment>

<sub-deployment name="xxx-ejb-3.1.1-SNAPSHOT.jar">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>

<sub-deployment name="xxx-web-3.1.1-SNAPSHOT.war">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>
</jboss-deployment-structure>

有什么想法吗?

最佳答案

一个好的方法是让 maven 负责生成 application.xml 文件:

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<filtering>true</filtering>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<ejbModule>
<groupId>${project.groupId}</groupId>
<artifactId>xxxsystem-ejb</artifactId>
</ejbModule>
<webModule>
<groupId>${project.groupId}</groupId>
<artifactId>xxxsystem-web</artifactId>
<contextRoot>/xxxsystem</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>

其次,可以使用filtering 生成jboss-deployment-structure.xml(假设在src/main/application 中)在插件中启用(如上所示)并将其源代码修改为:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</deployment>

<sub-deployment name="xxxsystem-ejb-${project.version}.jar">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>

<sub-deployment name="xxxsystem-web-${project.version}.war">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>
</jboss-deployment-structure>

或者,您可以通过 specifying the module filename 生成带有无版本嵌入式模块的 EAR。 :

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<ejbModule>
<groupId>${project.groupId}</groupId>
<artifactId>xxxsystem-ejb</artifactId>
<bundleFileName>xxxsystem-ejb.jar</<bundleFileName>
</ejbModule>
<webModule>
<groupId>${project.groupId}</groupId>
<artifactId>xxxsystem-web</artifactId>
<bundleFileName>xxxsystem-web.war</<bundleFileName>
<contextRoot>/xxxsystem</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>

在这种情况下,不需要过滤复制 jboss-deployment-structure.xml。每个子部署名称将与 maven-ear-plugin 配置中使用的 bundleFileName 匹配。

关于java - 如何在 maven 发布后自动更新 application.xml 中的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com