mvn release plugin发布下一个快照而非当前版本

时间:2014-09-29 15:47:10

标签: maven maven-3 maven-release-plugin

您好我已经从我的工作站发布了一个没有问题的项目。我最近尝试从1.0.0-SNAPSHOT发布另一个项目。但是当它实际发布时,它会将1.0.1-SNAPSHOT释放到快照存储库而不是1.0.0以释放存储库。 我已经完成了dryRun = true,看起来很好。实际上它默认为版本:

What is the release version for "Appname"? (...) 1.0.0: :
What is SCM release tag or label for "Appname"? (...) Appname-1.0.0: :
What is the new development version for "Appname"? (...) 1.0.1-SNAPSHOT: :

我采取所有默认值。 但是,当我执行" mvn发布时:执行" 这就是它的作用:

[INFO] Uploading: http://{corporate-nexus-site}/snapshots/{app-path}/1.0.1-SNAPSHOT/fei-logging-formatter-1.0.1-20140929.153303-1.jar
...
[INFO] [INFO] BUILD SUCCESS

我正在使用最新的maven,我手动添加了最新版本的插件。我可以使用相同的parent和settings.xml设置发布另一个项目。 在干燥运行之后查看属性文件并准备它对我来说都是正确的。 我原本认为我的发行版设置错误,并且正在向快照存储库发布一个版本,但是你可以看到它实际上认为它做得很好并发布了快照。

皇室混淆。

关于尝试什么的任何想法?

感谢。

更新:在项目中,我将pom从1.0.0-SNAPSHOT更新为1.0.0并进行了" mvn deploy"它把它完全放在了我预期的版本中,当然没有所有好处。

UPDATE2 :Pom(保护有罪的公司名称)

<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>logging-formatter</groupId>
    <artifactId>logging-formatter</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>Logging Formatter</name>
    <description>logging tool to format your logging in the standard cn way.</description>
    <parent>
        <groupId>com.companyname.pom.parent.master</groupId>
        <artifactId>cn-pom-parent-master</artifactId>
        <version>2014.3.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
    </build>
    <scm>
        <url>http://svn.sys.ds.companyname.com/svn/cn-logging</url>
        <connection>scm:svn:http://svn.sys.ds.companyname.com/svn/cn-logging</connection>
        <developerConnection>scm:svn:http://svn.sys.ds.companyname.com/svn/cn-logging</developerConnection>
    </scm>
    <organization>
        <name>CompanyName Enterprises</name>
    </organization>
    <ciManagement>
        <system>Jenkins</system>
        <url>http://jenkins.sys.ds.companyname.com:8080/job/cn-logging-DEVELOP/</url>
    </ciManagement>
</project>

更新3:添加父设置信息

      SETTINGS.XML
      <repositories>
        <repository>
          <id>fei-releases</id>
          <name>Ferguson Release Repository</name>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://{companyname}/nexus/content/repositories/releases</url>
          <layout>default</layout>
        </repository>
        <repository>
          <id>fei-snapshots</id>
          <name>Ferguson Snapshot Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </snapshots>
          <url>http://{companyname}/nexus/content/repositories/snapshots/</url>
          <layout>default</layout>
        </repository>
        <repository>
          <id>fei-thirdparty</id>
          <name>Ferguson 3rd Party Repository</name>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://{companyname}/nexus/content/repositories/thirdparty/</url>
          <layout>default</layout>
        </repository>
      </repositories>

      PARENT REPOSITORIES:
    <repositories>
      <repository>
        <id>third-party</id>
        <name>3rd Party Repository</name>
        <url>http://{companyname}/nexus/content/repositories/thirdparty/</url>
        <layout>default</layout>
      </repository>
    </repositories>
    <pluginRepositories/>

    PARENT DISTRIBUTION MANAGEMENT:
    <distributionManagement>
    <repository>
      <id>fei-releases</id>
      <name>Ferguson Release Repository</name>
      <url>http://{companyname}/nexus/content/repositories/releases</url>
      <layout>default</layout>
    </repository>
    <snapshotRepository>
      <id>fei-snapshots</id>
      <name>Ferguson Snapshot Repository</name>
      <url>http://{companyname}/nexus/content/repositories/snapshots</url>
      <layout>default</layout>
    </snapshotRepository>
  </distributionManagement>

2 个答案:

答案 0 :(得分:0)

  

我做了一个&#34; mvn发布:干净发布:准备&#34;然后是一个&#34; mvn   释放:执行&#34;我用来释放另一个项目的相同步骤   问题使用同一个父母。

所以你有另一个项目在发布后部署得很好吗? (您在回购中看到发布版本)?

如果是这样,这听起来像是一个问题&#39;项目。你能分享一下它的pom.xml吗?

答案 1 :(得分:0)

@SteveHolt,

我在你的pom.xml文件中看到一个红色标记:

<scm>
    <url>http://svn.sys.ds.companyname.com/svn/cn-logging</url>
    <connection>scm:svn:http://svn.sys.ds.companyname.com/svn/cn-logging</connection>
    <developerConnection>scm:svn:http://svn.sys.ds.companyname.com/svn/cn-logging</developerConnection>
</scm>

这些网址都不包含trunkbranchestags个关键字。

因此,当Maven创建发布标记时,它会告诉SVN使用与以前相同的URL:

http://svn.sys.ds.companyname.com/svn/cn-logging

release-prepare运行时,它会执行

$ svn checkout http://svn.sys.ds.companyname.com/svn/cn-logging/

但它无法区分开发主干的发布标记。

因此,它检索发布后快照修订版(这是最新的提交)而不是发布版本(前面的提交)。

<强> 解决方案

trunk下创建cn-logging目录,并将所有代码移入其中:

svn/cn-logging/
    trunk/
        pom.xml
        src/
            main/
            java/
    branches/
    tags/

希望有所帮助。