如何从 war 文件中删除版本号
How to remove version number from war file
我对这样的子 pom 有依赖关系。
<dependencies>
<dependency>
<groupId>sample-groupID</groupId>
<artifactId>sfint</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
我正在使用 maven-ear-plugin。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven.ear.plugin</artifactId>
<version>2.10</version>
<configuration>
<modules>
<webModule>
<groupId>sample-gropuID</groupId>
<artifactId>sfint</artifactId>
<version>1.0.0-SNAPSHOT</version>
<moduleID>WebModule_sfint</moduleID>
<bundleFileName>sfint.war</bundleFileName>
</webModule>
</modules>
</configuration>
</plugin>
现在我的问题是我希望我的 war 文件是这样的 - sfint.war 但我得到的是 - sfint.1.0.0-SNAPSHOT.war
有什么帮助吗??
您可以在 EAR 文件中配置 maven-ear-plugin to omit the version information:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
[...]
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
</plugins>
</build>
在 <build>
标签中,将工件所需的名称指定为 "finalName"。
<build>
<finalName>sfint</finalName>
</build>
这将解决您的问题:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>myEAR</groupId>
<artifactId>myEAR</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10</version>
<configuration>
<earSourceDirectory>EarContent</earSourceDirectory>
<generateApplicationXml>false</generateApplicationXml>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>myWAR</groupId>
<artifactId>myWAR</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
</project>
您的最终 EAR 将是 myEAR-0.0.1.SNAPSHOT.EAR,其中包含 myWAR.war(无版本号)
如果您还想从 EAR 中删除版本号而不是添加 myEar
如果 war/ejb 是 ear 项目的一部分,应该使用 bundleFileName 更改最终 ear 工件中的模块名称。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${version.ear.plugin}</version>
<configuration>
<modules>
<webModule>
<groupId>com.foo</groupId>
<artifactId>myapp-web</artifactId>
<contextRoot>/myapp</contextRoot>
<bundleFileName>myapp-web.war</bundleFileName>
</webModule>
<ejbModule>
<groupId>com.foo</groupId>
<artifactId>myapp-ejb</artifactId>
<bundleFileName>myapp-ejb.jar</bundleFileName>
</ejbModule>
</modules>
</configuration>
</plugin>
为 maven-ear-plugin
插件使用 outputFileNameMapping
选项
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<outputFileNameMapping>@{artifactId}@@{dashClassifier?}@.@{extension}@</outputFileNameMapping>
我对这样的子 pom 有依赖关系。
<dependencies>
<dependency>
<groupId>sample-groupID</groupId>
<artifactId>sfint</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
我正在使用 maven-ear-plugin。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven.ear.plugin</artifactId>
<version>2.10</version>
<configuration>
<modules>
<webModule>
<groupId>sample-gropuID</groupId>
<artifactId>sfint</artifactId>
<version>1.0.0-SNAPSHOT</version>
<moduleID>WebModule_sfint</moduleID>
<bundleFileName>sfint.war</bundleFileName>
</webModule>
</modules>
</configuration>
</plugin>
现在我的问题是我希望我的 war 文件是这样的 - sfint.war 但我得到的是 - sfint.1.0.0-SNAPSHOT.war
有什么帮助吗??
您可以在 EAR 文件中配置 maven-ear-plugin to omit the version information:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
[...]
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
</plugins>
</build>
在 <build>
标签中,将工件所需的名称指定为 "finalName"。
<build>
<finalName>sfint</finalName>
</build>
这将解决您的问题:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>myEAR</groupId>
<artifactId>myEAR</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10</version>
<configuration>
<earSourceDirectory>EarContent</earSourceDirectory>
<generateApplicationXml>false</generateApplicationXml>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>myWAR</groupId>
<artifactId>myWAR</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
</project>
您的最终 EAR 将是 myEAR-0.0.1.SNAPSHOT.EAR,其中包含 myWAR.war(无版本号) 如果您还想从 EAR 中删除版本号而不是添加 myEar
如果 war/ejb 是 ear 项目的一部分,应该使用 bundleFileName 更改最终 ear 工件中的模块名称。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${version.ear.plugin}</version>
<configuration>
<modules>
<webModule>
<groupId>com.foo</groupId>
<artifactId>myapp-web</artifactId>
<contextRoot>/myapp</contextRoot>
<bundleFileName>myapp-web.war</bundleFileName>
</webModule>
<ejbModule>
<groupId>com.foo</groupId>
<artifactId>myapp-ejb</artifactId>
<bundleFileName>myapp-ejb.jar</bundleFileName>
</ejbModule>
</modules>
</configuration>
</plugin>
为 maven-ear-plugin
插件使用 outputFileNameMapping
选项
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<outputFileNameMapping>@{artifactId}@@{dashClassifier?}@.@{extension}@</outputFileNameMapping>