gpt4 book ai didi

java - 确定 maven 部署文件的存储库 URL

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:24 25 4
gpt4 key购买 nike

我正在使用 Maven 构建一个特定项目,并且在 POM 中,我正在使用 maven shade 插件构建主要 Artifact 的 3 个不同变体(我正在使用包含的日志记录框架的各种组合创建 uber jar)。 shade 插件创建带有替代 Artifact ID 及其各自的减少依赖性的 poms 的 jar。

我现在面临的挑战是如何将这些新 Artifact 部署到我的远程存储库。我正在使用 maven 安装插件将它们安装到我的本地存储库,但 maven 部署插件需要显式配置存储库 URL。我想要发生的是让插件采用默认部署使用的任何远程 repo ,无论是快照或发布 repo 还是我通过命令行传入的另一个 repo URL。我希望找到一些 Maven 属性,例如 ${project.remoterepo.url} 等同于已解决的 repo 协议(protocol)。当部署目标已经这样做时,必须显式配置远程 URL 似乎很愚蠢。

任何建议表示赞赏。谢谢!

最佳答案

这就是我根据版本模式自动选择 SNAPSHOT 或 RELEASE 重现的方法:(我知道这是一种代码味道,但 ASF 无论如何都不愿意包含您的代码我可以解决我的要求的原因)

<properties>
<deploy.repositoryUrl>.. url release repo ..</deploy.repositoryUrl>
<deploy.repositoryId>.. id release repo ..</deploy.repositoryId>
<deploy.repositorySnapshotUrl>.. snapshot repo ..</deploy.repositorySnapshotUrl>
<deploy.repositorySnapshotId>.. id snapshot repo ..</deploy.repositorySnapshotId>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<!-- sets the isSnapshot property to true if SNAPSHOT was used -->
<id>build-helper-regex-is-snapshot-used</id>
<phase>validate</phase>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>isSnapshot</name>
<value>${project.version}</value>
<regex>.*-SNAPSHOT</regex>
<replacement>true</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
<!-- set the properties deploy.Url and deploy.Id during validation to
either the snapshot repository or the release repository
depending on the version pattern.-->
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source><![CDATA[
pom.properties['deploy.Url']=pom.properties['isSnapshot'].equals('true') ? pom.properties['deploy.repositorySnapshotUrl'] : pom.properties['deploy.repositoryUrl'];
pom.properties['deploy.Id']=pom.properties['isSnapshot'].equals('true') ? pom.properties['deploy.repositorySnapshotId'] : pom.properties['deploy.repositoryId'];
]]></source>
</configuration>
</execution>
</executions>
</plugin>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>DeployToArtifactory</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<url>${deploy.Url}</url>
<repositoryId>${deploy.Id}</repositoryId>
<file>target/${project.build.finalName}.${project.packaging}</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<classifier>resources</classifier>
<pomFile>${project.build.directory}/pom/pom.xml</pomFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

关于java - 确定 maven 部署文件的存储库 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com