0

我想无论是使用快照库(使用配置属性project.distributionManagement.snapshotRepository.url)如果当前版本的配置手动文件部署到远程仓库手动部署使用释放或快照存储库该项目是快照版本或发布存储库(使用配置的属性project.distributionManagement.repository.url),否则。为根据项目版本

我想部署一个招摇的JSON架构到资源库,我没有找到比手动部署以外的任何方式。

+1

请,你能解释以何种方式做你的需要发散来自标准的Maven行为?因为我的第一印象是标准行为适合您的需求 –

+0

我已经对手动部署的原因进行了更新。 –

+0

发行版或快照库将由您使用的版本决定。这意味着如果你使用像'XXXX-SNAPSHOT'它将被部署到快照库,如果你使用的东西,不'-SNAPSHOT'它将被部署到释放资源库......所以我不明白的是为什么你需要做一些不同的事情?手动进行部署可以通过'mvn deploy'完成?使用手动部署(带有部署文件目标)的 – khmarbaise

回答

1

周围有使用建设者帮手BSH使用从分配管理配置正确的存储库工作。它使用正确的值设置属性。然后用目标部署文件和这个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> 
0

如果你需要的是一些部署神器(可能是JSON文本文件),有没有相应的pom.xml文件支持它,你可以使用部署文件的目标:

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,但很容易适用于任何其他操作系统。这里我们感兴趣的是repositoryId,应该指向现有的认证在你的settings.xml:

... 
<servers> 
     <server> 
      <id>my_repo_id</id> 
      <username>your_user_for_deployment</username> 
      <password>your_pwd_for_deployment</password> 
     </server> 
</servers> 
... 

希望这将帮助你^^