繁体   English   中英

如何在不对存储库进行硬编码的情况下在Maven中部署其他工件?

[英]How to deploy additional artifacts in maven without hardcoding a repository?

在我的maven pom中,我有一个附加的jar文件,我想将其包含在我的可部署文件中。 我已经成功建立了jar文件,并且我想我会使用maven-deploy-plugin,就像这样(从版本管理上来说,我使用的是来自dependencyManagement的2.8.2):

    <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会将library.Id和url参数都使用project.distributionManagement.repository.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插件动态更改此属性,但这似乎是一个潜在的难题,特别是因为有人之前曾尝试做类似的事情(由于其他原因,但概念相似): 检查Maven是否pom是快照

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

谢谢!

这听起来更像是maven-jar-plugin的第二次执行(删除内容之后),这将导致通过mvn deploy自动上传,而无需执行此类奇怪的操作...

或者可能正在使用创建补充工件(一个或多个)的maven-assembly-plugin ...或者可能是maven-shade-plugin。 我不知道你怎么剥离东西...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM