2014-04-08 3 views
4

저는 Maven과 Sonatype에 업로드하는 것들이 새롭기 때문에 오류가 분명하게 나올 수는 있지만 잘 숨어 있습니다. 이슈를 업로드하려고합니다. 이렇게하려면Maven - 생성 JAR GPG 서명

, 나는

mvn clean assembly:single -s settings.xml assembly:single javadoc:jar source:jar gpg:sign -Dgpg.passphrase=myPassphrase install deploy 

그러나 다음 명령을 실행이 업로드에 포함 된 어떤 오름차순 서명 파일이 없기 때문에 JAR 파일을 검증에 실패 넥서스 원인 - 사실이지만, I 이유를 이해하지 못한다. 또한 .xml 파일과 .zip, .tar.gz 및 .tar.bz2 파일의 서명이 있습니다. jars에 대해서도 생성되는 ascs에 대해 무엇을 지정해야합니까? 다음은

내 Settings.XML의와의 pom.xml 파일이 표시됩니다 :

Settings.XML의 :

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
         http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <servers> 
    <server> 
     <id>sonatype</id> 
     <username>myUsername</username> 
     <password>myPassword</password> 
    </server> 
    </servers> 

</settings> 

의 pom.xml :

에 항아리를 업로드하기 위해
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.github.aaryn101</groupId> 
    <artifactId>lol4j</artifactId> 
    <version>2.0</version> 
    <packaging>jar</packaging> 

    <name>lol4j</name> 
    <description>lol4j is a Java wrapper for the Riot Games LoL beta API.</description> 
    <url>https://github.com/aaryn101/lol4j</url> 

    <licenses> 
    <license> 
     <name>The MIT License (MIT)</name> 
     <url>http://opensource.org/licenses/MIT</url> 
     <distribution>repo</distribution> 
    </license> 
    </licenses> 

    <scm> 
    <url>https://github.com/aaryn101/lol4j.git</url> 
    </scm> 

    <distributionManagement> 
    <repository> 
    <id>sonatype</id> 
    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> 
    </repository> 
    </distributionManagement> 

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <descriptor>dep.xml</descriptor> 
     </configuration> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.9.1</version> 
     <executions> 
     <execution> 
      <id>attach-javadocs</id> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.2.1</version> 
     <executions> 
     <execution> 
      <id>attach-sources</id> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
</project> 

답변

4

Maven 저장소에 저장하려면 주어진 키 서버에서 공개 키를 사용하여 서명해야합니다. 여기 detailed instructions을 참조하십시오.이 blog post도 유용합니다.

가장 중요한 단계는 키를 생성하여 키 서버에 업로드하는 것입니다 (위 링크에서 자세히 설명 됨).

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-gpg-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
      <id>sign-artifacts</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>sign</goal> 
      </goals> 
     </execution> 
    </executions> 
    </plugin> 

이것이입니다 : 항아리에 서명

<profiles> 
     <profile> 
      <id>gpg</id> 
      <properties> 
       <gpg.passphrase>your passphrase</gpg.passphrase> 
       <gpg.keyname>your pgp key</gpg.keyname> 
      </properties> 
     </profile> 
    </profiles> 

가 다음 순서로 pom.xml 파일이 추가 :

다음 Maven을 사용할 수있는 PGP 키를 만들기 위해 Settings.XML의 편집 working pom.xml의 예입니다.

+0

감사합니다.이 정보를 사용하여 pom.xml 작업에 대한 예제에서 "중복 저장소 태그"를 얻는 중 이상한 것이 있었지만 적절한 pom을 만들 수있었습니다. 어쨌든, 지금 배포하려고 할 때 401 권한이없는 오류가 발생합니다. 나는 [401 문제에 대한이 FAQ] (http://blog.sonatype.com/2010/11/what-to-do-when-nexus-returns-401/)을 읽었지만 거기에 언급 된 모든 내용은 나를 위해 잘하는 것. 다른 제안? –