如果项目的当前版本是快照版本或发布存储库,则使用快照存储库(使用配置属性project.distributionManagement.snapshotRepository.url)配置手动文件部署到远程存储库(使用否则配置属性project.distributionManagement.repository.url。
我想将一个swagger json架构部署到存储库,除了手动部署之外我没有找到任何其他方法。
答案 0 :(得分:1)
使用构建器帮助程序bsh可以使用分发管理配置中的正确存储库。它使用正确的值设置属性。然后使用目标deploy-file和此URL调用maven deploy插件。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<phase>deploy</phase>
<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>
答案 1 :(得分:0)
如果您需要部署一些没有相应pom.xml文件支持它的工件(可能是json文本文件),您可以使用deploy-file目标:
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
这允许您将任何类型的工件从任何源部署到maven存储库,通过命令行指定组,工件和版本坐标以及您需要的任何其他内容。
为了根据您的版本将其部署到正确的位置,我可以为您提出我们为类似目的而构建的蚂蚁脚本片段:
<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,但很容易适用于任何其他操作系统。这里有趣的是repositoryId,它应该指向settings.xml中的现有身份验证:
...
<servers>
<server>
<id>my_repo_id</id>
<username>your_user_for_deployment</username>
<password>your_pwd_for_deployment</password>
</server>
</servers>
...
希望这会对你有帮助^^
答案 2 :(得分:0)
@Nicolas Henneaux的答案是正确的,但deploy
中的build-helper-maven-plugin
阶段是错误的。新属性在生命周期的下一个阶段可见,因此在这种情况下它将不可见。删除该文件(默认验证有效)后,一切开始起作用。