如何构建没有版本的Maven项目?


80

我有一个要构建的Maven项目,而没有版本。

现在,当我使用maven生成项目时,它会创建它,commonjerseylib-1.0.war但是我需要commonjerseylib.war创建它。

除此之外,我<version>从中删除了标签,pom.xmlwar默认情况下Maven仍在使用1.0版进行创建。

我的pom.xml

      <modelVersion>4.0.0</modelVersion>
      <groupId>commonjerseylib</groupId>
      <artifactId>commonjerseylib</artifactId>
      <packaging>ear</packaging>
      <name>commonjerseylib</name>
      <!--<version>1.0</version>-->

没有版本如何构建?

Answers:


166

您将始终需要一个项目的版本号,但是可以通过<finalName>POM中的元素更改生成的包的名称(JAR,WAR,EAR等)。

<project>
    ...
    <build>
        ...
        <finalName>${project.artifactId}</finalName>
        ...
    </build>
    ...
</project>

或旧版本的Maven:

        ...
        <finalName>${artifactId}</finalName>
        ...

默认情况下,finalName是${project.artifactId}-${project.version},但是可以将其更改为其他名称。这只会影响在target目录中创建的包的名称。在本地存储库中并上传到远程存储库的文件名将始终具有版本号。

有关更多信息,请参见POM参考文档


完美,清晰,干净!
托马斯

7
从Maven 3.0.3起,不推荐使用$ {artifactId},而推荐使用$ {project.artifactId}。
格伦2014年

2
@prunge:谢谢您的回答。您知道执行此操作的任何方法,因为它会影响本地存储库和远程存储库中的文件名。
namalfernandolk 2015年

请注意,它无法从命令行覆盖,例如-Dproject.build.finalName=whatever-如果您希望能够在命令行上指定jar的名称,请参阅stackoverflow.com/a/13877971/587365
Andrew Spencer,

11

在构建中的Maven War插件中,更改

<warName> ${artifactId} </warName>

        <build>
           ..........
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <!-- web.xml is not mandatory since JavaEE 5 -->
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>${artifactId}</warName>
                </configuration>
            </plugin>
         .............
       <build>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.