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> 
... 

希望這將幫助你^^