如何在没有硬编码存储库的情况下在maven中部署其他工件?

时间:2015-03-10 15:22:45

标签: maven release snapshot maven-deploy-plugin deploying

在我的maven pom中,我有一个额外的jar文件,我希望将其包含在我的部署中。我已经成功构建了jar文件,我想我会使用maven-deploy-plugin,就像这样(版本方面,我使用了来自dependencyManagement的2.8.2): / p>

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-deploy-plugin</artifactId>
      <executions>
        <execution>
          <id>deploy-special-jar</id>
          <phase>deploy</phase>
          <goals>
            <goal>deploy-file</goal>
          </goals>
          <configuration>
            <repositoryId>${project.distributionManagement.repository.id}</repositoryId>
            <url>${project.distributionManagement.repository.url}</url>
            <groupId>${project.groupId}</groupId>
            <artifactId>${project.artifactId}</artifactId>
            <version>${project.version}-special</version>
            <file>${project.build.directory}/special.jar</file>
          </configuration>
        </execution>
      </executions>
    </plugin>

这很好用,但是有一个小问题。如果您注意到,上面的pom正在使用project.distributionManagement.repository.url来获取repositoryId和url参数。但是,这意味着无论我是在构建快照还是发布版本,我总是会向我发布版本区域,这并不理想。如果我要制作快照怎么办?好吧,答案似乎是将project.distributionManagement.repository.url更改为project.distributionManagement.snapshotRepository.url

我不喜欢手动更改这些行的想法,因为我喜欢使用maven-release-plugin在快照和发布版本之间切换。现在,我必须添加一些脚本来每次更改这些行。这是可能的,但并不理想。

在2008年之前,似乎有人问过这个确切的问题,并没有真正的答案: http://maven.40175.n5.nabble.com/problems-with-the-maven-deploy-plugin-td107307.html 所以,我想我会在这里添加它,看看人们想出了什么。

我考虑使用build-helper插件来动态更改此属性,但这似乎是一个潜在的兔子洞,尤其是 有人试图做一些类似的事情(由于其他原因,但概念是相似的): Check if Maven pom is SNAPSHOT

那么,这里的正确答案是什么?这应该是功能请求吗?或者,有没有一种简单的方法来解决人们使用的这个问题?我很好奇别人做了什么。有没有人对build-helper插件有好运?

谢谢!

1 个答案:

答案 0 :(得分:0)

这听起来更像是maven-jar-plugin的第二次执行(删除之后),这将导致通过mvn deploy自动上传,无需做这些奇怪的事情......

或者可能正在使用maven-assembly-plugin创建一个补充工件(一个或多个)......或者maven-shade-plugin。我不确定你是如何剥离的......