簡體   English   中英

pom.xml中的版本未更新

[英]Version is not updating in pom.xml

我有一個Maven插件( com.helloworld.plugin ),它從另一個Maven項目中的pom.xml讀取版本。 我為此有一個Java類HelloWorld ,它看起來像這樣-

package com.helloworld.plugin.com.helloworld.plugin;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.project.MavenProject;

@Mojo(name = "say-helloworld",defaultPhase = LifecyclePhase.COMPILE)
public class HelloWorld extends AbstractMojo{

    @Component
    private MavenProject project;

    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("Hello World!!");

        String version = project.getVersion();
        String release = version;

        getLog().info(version);

        if(version.indexOf("-SNAPSHOT")>1) {
        release = version.substring(0, version.indexOf("-SNAPSHOT"));

        }

        //project.getProperties().setProperty("newVersion", release );
        project.setVersion(release );
        getLog().info("SNAPSHOT FOUND :: " + project.getVersion());
    }
}

我有另一個正在使用此插件的Maven項目。 該項目的pom.xml看起來像這樣-

<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>TestJava</groupId>
    <artifactId>TestJava</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.helloworld.plugin</groupId>
                <artifactId>com.helloworld.plugin</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>say-helloworld</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

現在,當我在第二個項目上執行此mvn package ,將得到如下輸出:

[INFO] --- com.helloworld.plugin:0.0.1-SNAPSHOT:say-helloworld (default) @ TestJava ---
[INFO] Hello World!!
[INFO] 1.0.0-SNAPSHOT
[INFO] SNAPSHOT FOUND :: 1.0.0

看來pom.xml中的版本現在應該已經更新到2.0.0。 但是,當我刷新pom.xml並再次打開它時,我看到版本沒有更改。 仍然是1.0.0-SNAPSHOT。

我嘗試了兩種方法:

project.getProperties().setProperty("newVersion", release);

project.setVersion(release);

我在這里做錯了什么?

提前致謝!!

注意:
1.我不能使用發布插件,因為我沒有使用任何SCM。
2.我嘗試使用versions:set。 但是,它僅適用於版本的硬編碼值。 所以,我需要通過使用另一個Maven插件來做到這一點。

MavenProject上的操作僅更改運行時數據,而不更改持久性pom.xml。 此外,很可能在新版本中,甚至不可能: https : //maven.apache.org/ref/3.2.3/apidocs/org/apache/maven/project/MavenProject.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM