【问题标题】:Using Maven Versions Plugin使用 Maven 版本插件
【发布时间】:2013-10-04 15:30:01
【问题描述】:

使用以下命令行:

mvn 版本:解锁快照依赖:复制依赖

我在依赖文件夹中获得了所有具有 SNAPSHOT.jar 名称的快照 jar。

为什么我在将我的项目打包成战争时没有得到相同的行为? 我没有得到 mylibs-modules-1.0-SNAPSHOT.jar,而是得到那些递增的数字。

已编辑

<project>
<modelVersion>4.0.0</modelVersion>

<artifactId>mylibs</artifactId>
<packaging>war</packaging>
<version>3.4</version>

<parent>
    <groupId>parent</groupId>
    <artifactId>mylibs-parent</artifactId>
    <version>3.4</version>
</parent>

<build>
    <finalName>mylibs-war</finalName>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
        </plugin>
    </plugins>
</build>

父 POM 文件

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>parent</groupId>
<artifactId>mylibs</artifactId>
<packaging>pom</packaging>
<version>3.4</version>

<properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-tests</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-processor</artifactId>
        <version>1.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-persistence</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-databean</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-localization</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-net</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-lang</artifactId>
        <version>1.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-metadata</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-events</artifactId>
        <version>1.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>mylibs</groupId>
        <artifactId>mylibs-logging</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

【问题讨论】:

  • 如果不看你的 pom,很难说出为什么包装以某种方式工作
  • 我的 pom 是空的,它从父 pom 文件中获取它的依赖项,并且我声明了插件,以便我可以从命令行调用它们。我刚刚定义了组/工件/版本元素。
  • 我以命令行方式运行“mvn versions:unlock-snapshots package”,我希望在战争中得到 jarnames-SNAPSHOT.jar,但事实并非如此。
  • 也许你可以共享父 pom,因为如果不查看 pom 配置就很难回答。
  • 添加了父 pom 文件内容。

标签: java maven build war


【解决方案1】:

插件目标并非设计为根据documentation 作为生命周期的一部分运行。描述 unlock-snapshots 目标的 Attributes 部分说

仅通过直接调用执行。

这意味着它只有在你一直在命令行输入mvn versions:unlock-snapshots 时才会运行。


刚刚注意到上面关于命令如何运行的评论:

mvn versions:unlock-snapshots package

我怀疑这不起作用,因为unlock-snapshots 目标实际上是在更改 POM,但是 package 阶段正在使用原始的、未修改的 POM 版本运行。也许使用-X 运行构建会显示这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 2013-01-16
    • 2014-08-01
    • 2016-02-05
    • 2011-06-18
    • 2021-08-02
    • 2018-04-05
    相关资源
    最近更新 更多