【问题标题】:How to build maven project without version?如何构建没有版本的maven项目?
【发布时间】:2012-03-24 12:12:00
【问题描述】:

我有一个没有版本的 maven 项目。

现在,当我使用 maven 构建项目时,它会创建此 commonjerseylib-1.0.war,但我需要创建此 commonjerseylib.war

除此之外,我从pom.xml 中删除了<version> 标签,但Maven 仍然使用war 创建,默认版本为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>-->

无版本如何构建?

【问题讨论】:

    标签: maven


    【解决方案1】:

    我用 pom 中的以下代码行修复了它

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

    【讨论】:

      【解决方案2】:

      您始终需要项目的版本号,但是可以通过 POM 中的&lt;finalName&gt; 元素更改生成的包的名称(JAR、WAR、EAR 等)。

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

      或在旧版本的 maven 中:

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

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

      请参阅POM reference documentation 了解更多信息。

      【讨论】:

      • 完美、清晰、干净!
      • 至少从 Maven 3.0.3 开始,不推荐使用 ${artifactId} 以支持 ${project.artifactId}。
      • @prunge :感谢您的回答。你知道有什么方法可以做到这一点,因为它会影响本地存储库和远程存储库中的文件名。
      • 请注意,不能像-Dproject.build.finalName=whatever 这样从命令行覆盖 - 如果您希望能够在命令行上指定 jar 的名称,请参阅 stackoverflow.com/a/13877971/587365
      • 我如何在 Spring Boot 中做到这一点
      【解决方案3】:

      在构建中的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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-21
        • 2013-10-03
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多