【问题标题】:maven not updating jar in local repo with new build numbermaven 没有用新的内部版本号更新本地 repo 中的 jar
【发布时间】:2012-05-18 23:23:45
【问题描述】:

我在我的一个模块的 pom 中添加了内部版本号插件,如下所示:

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.0-beta-4</version>
        <executions>
            <execution>
                <phase>validate</phase>        
                <goals>
                    <goal>create</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <doCheck>false</doCheck>
            <doUpdate>true</doUpdate>
            <format>${project.version}.{0,number}</format>
            <items>
                <item>buildNumber</item>
            </items>
        </configuration>
    </plugin>

我还尝试将构建的 jar 保存在文件夹中。

<plugin>

    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <archive>
        <manifest>
          <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
        </manifest>
        <manifestEntries>
          <Implementation-Build>${buildNumber}</Implementation-Build>
        </manifestEntries>
      </archive>
      <outputDirectory>target/${buildNumber}</outputDirectory>
    </configuration>
</plugin>

构建工作正常,jar 在 target 内创建为 target//myjar-.jar (假设版本为 1.0,并且每次构建从 1 开始,版本号都会递增) 但是在本地存储库中,jar 存储为 package//myjar-.jar ,即内部版本号没有被添加到那里。 有没有办法做到这一点? 谢谢。

【问题讨论】:

    标签: java maven-3


    【解决方案1】:

    如果我正确理解您的问题,一切似乎都很好(目标目录中的工件、清单等),除了本地存储库中的文件名不是您想要的,对吗?

    如果是这样,如果我没记错的话,那就是它应该起作用的。本地/远程存储库中的工件文件名是根据工件名称、版本号、修饰符和限定符以及快照时的时间戳生成的。它与目标目录中的输出文件名无关。

    【讨论】:

    • 感谢阿德里安,如果是这样的话,如果它没有存储在我的本地仓库中,我该如何使用新的内部版本号指定一个工件作为对另一个工件的依赖?例如,如果在构建 jar A 期间生成的工件是 A-1.0-1 那么由于在本地 repo 中它存储为 A-1.0 所以我不能将 A-1.0-1 指定为依赖项..那么这个插件的用途是什么。 .它只是为了创造最后的战争而不是个别的罐子吗?谢谢。
    • 您应该“实际上”将本地仓库中的工件视为没有名称。 Artifact 仅通过 GroupID + ArtifactID + version + Modifier/Qualifier 定位。它们都与文件名无关。该插件的使用完全取决于您的使用情况,我相信大多数人使用它来将内部版本号放入某些资源或 META-INF 中。要实现您想要的,您需要将内部版本号作为版本(或限定符?)的一部分。我不推荐这种方法,因为它不适用于现有的 Maven。但是,您可以查看 maven 发布插件以即时更新版本。
    猜你喜欢
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2014-08-07
    • 2023-03-06
    • 2015-04-01
    相关资源
    最近更新 更多