根据项目版本使用release或者snapshot repository进行手动部署
Use release or snapshot repository for manual deployment depending on the project version
如果项目的当前版本是快照版本,我想使用快照存储库(使用已配置的 属性 project.distributionManagement.snapshotRepository.url)将手动文件部署配置到远程存储库,或者配置到否则释放存储库(使用配置的 属性 project.distributionManagement.repository.url)。
我想将 swagger json 架构部署到存储库,但除了手动部署外,我没有找到任何其他方式。
有一种解决方法是使用构建器助手 bsh 从分发管理配置中使用正确的存储库。它使用正确的值设置 属性。然后使用目标部署文件和此 URL.
调用 maven 部署插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<properties>
<property>deploy.url</property>
</properties>
<source>deploy.url = project.getVersion().endsWith("-SNAPSHOT") ? project.getDistributionManagement().getSnapshotRepository().getUrl() : project.getDistributionManagement().getRepository().getUrl() ;</source>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<url>${deploy.url}</url>
<repositoryId>releases</repositoryId>
<file>${swagger.directory}/swagger.json</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>json</packaging>
<classifier>swagger</classifier>
</configuration>
</execution>
</executions>
</plugin>
如果您需要部署一些没有相应 pom.xml 文件支持的工件(可能是 json 文本文件),您可以使用部署文件目标:
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
这允许您将来自任何来源的任何类型的工件部署到 Maven 存储库中,通过命令行指定组、工件和版本坐标以及您需要的任何其他内容。
为了根据您的版本将其部署到正确的位置,我可以向您推荐我们为类似目的构建的这个 ant 脚本片段:
<condition property="url" value="${snapshots.repo.url}" else="${releases.repo.url}">
<contains string="${project.version}" substring="-SNAPSHOT"/>
</condition>
<exec executable="cmd">
<arg value="/c"/>
<arg value="mvn.bat"/>
<arg value="deploy:deploy-file"/>
<arg value="-DgroupId=com.myorg.swagger"/>
<arg value="-DartifactId=swagger_file"/>
<arg value="-Dversion=${project.version}"/>
<arg value="-U"/>
<arg value="-Dfile=./mydir/my_swagger_file.json"/>
<arg value="-Durl=${url}"/>
<arg value="-DrepositoryId=my_repo_id"/>
</exec>
这仅适用于 Windows,但很容易适用于任何其他 OS。这里有趣的一点是 repositoryId,它应该指向 settings.xml:
中的现有身份验证
...
<servers>
<server>
<id>my_repo_id</id>
<username>your_user_for_deployment</username>
<password>your_pwd_for_deployment</password>
</server>
</servers>
...
希望对您有所帮助^^
@Nicolas Henneaux 的回答是正确的,但是 build-helper-maven-plugin
中的 deploy
阶段不正确。新属性在生命周期的下一阶段是可见的,因此在这种情况下它是不可见的。删除它后(默认为验证)一切开始工作。
如果项目的当前版本是快照版本,我想使用快照存储库(使用已配置的 属性 project.distributionManagement.snapshotRepository.url)将手动文件部署配置到远程存储库,或者配置到否则释放存储库(使用配置的 属性 project.distributionManagement.repository.url)。
我想将 swagger json 架构部署到存储库,但除了手动部署外,我没有找到任何其他方式。
有一种解决方法是使用构建器助手 bsh 从分发管理配置中使用正确的存储库。它使用正确的值设置 属性。然后使用目标部署文件和此 URL.
调用 maven 部署插件<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<properties>
<property>deploy.url</property>
</properties>
<source>deploy.url = project.getVersion().endsWith("-SNAPSHOT") ? project.getDistributionManagement().getSnapshotRepository().getUrl() : project.getDistributionManagement().getRepository().getUrl() ;</source>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<url>${deploy.url}</url>
<repositoryId>releases</repositoryId>
<file>${swagger.directory}/swagger.json</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>json</packaging>
<classifier>swagger</classifier>
</configuration>
</execution>
</executions>
</plugin>
如果您需要部署一些没有相应 pom.xml 文件支持的工件(可能是 json 文本文件),您可以使用部署文件目标:
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
这允许您将来自任何来源的任何类型的工件部署到 Maven 存储库中,通过命令行指定组、工件和版本坐标以及您需要的任何其他内容。
为了根据您的版本将其部署到正确的位置,我可以向您推荐我们为类似目的构建的这个 ant 脚本片段:
<condition property="url" value="${snapshots.repo.url}" else="${releases.repo.url}">
<contains string="${project.version}" substring="-SNAPSHOT"/>
</condition>
<exec executable="cmd">
<arg value="/c"/>
<arg value="mvn.bat"/>
<arg value="deploy:deploy-file"/>
<arg value="-DgroupId=com.myorg.swagger"/>
<arg value="-DartifactId=swagger_file"/>
<arg value="-Dversion=${project.version}"/>
<arg value="-U"/>
<arg value="-Dfile=./mydir/my_swagger_file.json"/>
<arg value="-Durl=${url}"/>
<arg value="-DrepositoryId=my_repo_id"/>
</exec>
这仅适用于 Windows,但很容易适用于任何其他 OS。这里有趣的一点是 repositoryId,它应该指向 settings.xml:
中的现有身份验证...
<servers>
<server>
<id>my_repo_id</id>
<username>your_user_for_deployment</username>
<password>your_pwd_for_deployment</password>
</server>
</servers>
...
希望对您有所帮助^^
@Nicolas Henneaux 的回答是正确的,但是 build-helper-maven-plugin
中的 deploy
阶段不正确。新属性在生命周期的下一阶段是可见的,因此在这种情况下它是不可见的。删除它后(默认为验证)一切开始工作。