0

스냅 샷 저장소 (구성된 속성 project.distributionManagement.snapshotRepository.url 사용)를 사용하여 원격 저장소에 수동 파일 배포를 구성하려는 경우 현재 버전의 프로젝트는 스냅 샷 버전 또는 릴리스 저장소 (구성된 특성 project.distributionManagement.repository.url 사용)입니다.프로젝트 버전에 따라 수동 배포를 위해 릴리스 또는 스냅 샷 저장소 사용

swagger json 스키마를 저장소에 배포하려고하는데 수동 배포 이외의 다른 방법을 찾지 못했습니다.

+1

, 당신은 설명 할 수주십시오 분기 ^^ 도움이 될 것입니다

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

희망 : 흥미로운 비트는 여기 Settings.XML이의 기존 인증을 가리해야 repositoryId입니다 표준 Maven 동작에서? 내 첫 인상은 표준 행동이 니가 필요로하는 것이기 때문에. –

+0

나는 수동 배포의 이유로 업데이트했다. –

+0

릴리스 또는 스냅 샷 저장소는 사용하는 버전에 따라 결정됩니다. 즉,'XXXX-SNAPSHOT'과 같은 것을 사용하면 스냅 샷 저장소에 배치 될 것이고 만약'-SNAPSHOT'없이 어떤 것을 사용한다면 저장소를 배포하기 위해 배치 될 것입니다 ... 그래서 내가 왜 이해가 안되는지 당신이 왜 필요합니다 뭔가 다른 것을하기 위해? 수동으로 배치를 수행하는 것은'mvn deploy'로 할 수 있습니까? – khmarbaise

답변

1

분배 관리 구성에서 올바른 저장소를 사용하기 위해 빌더 도우미 bsh를 사용하는 것이 좋습니다. 올바른 값으로 속성을 설정합니다. 그런 다음 maven deploy 플러그인이 goal deploy-file과이 URL과 함께 호출됩니다.

<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

당신의 필요를 지원하는 해당 pom.xml 파일을하지 않은 일부 유물 (어쩌면 JSON 텍스트 파일)를 배포하는 경우, 당신은 배포 파일 대상 사용할 수 있습니다 :

http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

이 옵션을 사용하면 모든 출처에서 메이븐 저장소로 모든 종류의 이슈를 배포 할 수 있습니다. 그룹, 아티팩트 및 버전 좌표 및 필요한 항목을 명령 줄로 지정하십시오.

버전에 따라 적절한 장소에 배포하기 위해, 나는 당신에게 우리가 유사한 목적을 위해 만들어진 개미 스크립트의이 조각 제안 할 수있다 :

<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에 쉽게 적용 할 수 있습니다. 이것은 당신이

이 방법으로 요구 사항을 수행하는