2015-03-04 36 views
8

Kullanıcıların kütüphaneyi yalnızca kendi paketlerine referans göstererek kullanabilmeleri için maven merkezi yayınlamak istediğim bir oluşturdum. böylece gibi:JAR'ı maven merkezine manuel olarak nasıl yayınlarım?

<dependency> 
    <groupId>in.ksharma</groupId> 
    <artifactId>log4j-weblayout</artifactId> 
    <version>0.0.1-BETA</version> 
</dependency> 

Birkaç çevrimiçi öğreticiler buldum ama bazıları bazı tüm süreci otomatik hale tavsiye ve böylece açıkça karmaşık hale, güncel değil.

Örneğin, one tutorial, github hesabınız için SSH anahtarları oluşturmanızı tavsiye eder ve maven, ortada gezinmek için her basıldığında otomatik olarak bir git etiketi oluşturmasını sağlar. Bu yararlı olsa da, başlamak için gerekli değildir.

mvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.log 

verir:

başka örnek, maven ile doğrudan serbest bırakmak için çalışıyor da hata çeşit verir bunu sık sık olur ilk defa bir şey yapıyoruz

svn: E155007: '/home/kshitiz/Documents/workspaces/ggts/log4j-weblayout/pom.xml' is not a working copy

önce el ile yapmak ve sonra otomatikleştirmek için.

Maran merkezde JAR koymanın en temel, çıplak kemik yolu nedir?

cevap

10

Bu yanıt, maven tabanlı bir projeye sahip olduğunuzu ve paket halinde bir durumda olduğunu varsayar. mvn package hata olmadan çalıştırılmalıdır.

Maven merkezi için yayınlarken, yüklediğiniz tüm eserleri tanımlayacak bir grup kimliği kullanmanız gerekir. in.ksharma gibi bir şey. Ayrıca, yapay eserlerinizi, kullanıcıların aslında sizden geldiklerini doğrulayabilmeleri için imzalamanız gerekir.

İlk önce jira ve create an account sonatype'a gidin ve grup kimliğinizin onaylanması için bir jira sorunu oluşturun. this gibi bir şey.

Şimdi eserler imzalanması için gpg keypair oluşturmak:

$ gpg --gen-key 

~/.m2/settings.xml Bu anahtarı tanımlayın:

<profiles> 
    <profile> 
    <id>sonatype-oss-release</id> 
    <properties> 
     <gpg.keyname>B63EFB4D</gpg.keyname> 
     <gpg.passphrase>****</gpg.passphrase> 
     <gpg.defaultKeyring>true</gpg.defaultKeyring> 
     <gpg.useagent>true</gpg.useagent> 
     <gpg.lockMode>never</gpg.lockMode> 
     <gpg.homedir>/home/kshitiz/.gnupg</gpg.homedir> 
    </properties> 
    </profile> 
</profiles> 

projenizin pom dosyanızı değiştirip sürümüne -SNAPSHOT ekleyin. Yani 0.0.1-BETA0.0.1-BETA-SNAPSHOT olur. Aksi maven would complain:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project log4j-weblayout: You don't have a SNAPSHOT project in the reactor projects list. -> [Help 1]

Ayrıca ekleyin:

<parent> 
     <groupId>org.sonatype.oss</groupId> 
     <artifactId>oss-parent</artifactId> 
     <version>9</version> 
</parent> 

Bu ana pom sizin JAR imzalamak için maven-gpg-plugin yapılandırılması gibi bazı hazır işlevsellik sağlar.

Artık eserlerinizi ve gpg imzasını oluşturmak için mvn release:clean release:prepare çalıştırın.Sonatype Nexus için

jar -cvf bundle.jar log4j-weblayout-0.0.1-BETA* 

Git ve kimlik bilgileri ile giriş:

log4j-weblayout-0.0.1-BETA-javadoc.jar.asc 
log4j-weblayout-0.0.1-BETA-sources.jar.asc 
log4j-weblayout-0.0.1-BETA.pom.asc 
log4j-weblayout-0.0.1-BETA.pom 
log4j-weblayout-0.0.1-BETA.jar.asc 
log4j-weblayout-0.0.1-BETA-javadoc.jar 
log4j-weblayout-0.0.1-BETA-sources.jar 
log4j-weblayout-0.0.1-BETA.jar 

Şimdi tek JAR içine bu paketi: Size şöyle bir şey verecektir. Aşama yüklemesine gidin ve paketinizi yükleyin.

enter image description here

Sonra staging repositories bölümüne gidin deponuzu seçip salınımını (daha fazla yardım here) tıklayın. Jira konusunu, eseri yayınladığınız ve biraz zaman ayırdığınıza dair yorum yapın. Signup Sonatype


2) yeni bir proje oluşturun: JIRA hesabı oluşturun enter image description here enter image description here

+0

https://github.com/sonatype/oss-parents org.sonatype diyor. oss kullanımdan kaldırıldı. Belki bir güncelleme gerekli? Yine de bu ayrıntılı QA için teşekkürler! –

+0

kullanımdan kaldırıldı, cevabın konusuna bakın. –

5

1): Artık

kullanıcıların arama ve central repository yapay maddeleri kullanabilir

bilet (çalışma alanınızı talep etmek için): Create new project ticket


3) dağıtma PGP İmza

gpg2 --gen-key 
.... 
gpg: key YOUR_KEY_ID marked as ultimately trusted 
... 

4) üret senin genel anahtar

gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys YOUR_KEY_ID 

senkronizasyon hızlandırmak için birden fazla sunucu için anahtar dağıtın işlem (pgp.mit.edu, keyserver.ubuntu.com ...)


5) güncelleme ~ .m2/settings.xml

<settings> 
    <servers> 
    <server> 
     <id>ossrh</id> 
     <username>jira_username</username> 
     <password>jira_password</password> 
    </server> 
    </servers> 
    <profiles> 
    <profile> 
     <id>ossrh</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
     <gpg.executable>gpg2</gpg.executable> 
     <gpg.passphrase>your_key_passphrase</gpg.passphrase> 
     </properties> 
    </profile> 
    </profiles> 
</settings> 

6) Güncelleme proje pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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> 

    <parent> 
     <groupId>org.sonatype.oss</groupId> 
     <artifactId>oss-parent</artifactId> 
     <version>9</version> 
    </parent> 

    <groupId>xxx.xxx</groupId> 
    <artifactId>xxx</artifactId> 
    <version>0.1</version> 

    <distributionManagement> 
     <snapshotRepository> 
      <id>ossrh</id> 
      <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     </snapshotRepository> 
     <repository> 
      <id>ossrh</id> 
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> 
     </repository> 
    </distributionManagement> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-source-plugin</artifactId> 
       <version>2.2.1</version> 
       <executions> 
        <execution> 
         <id>attach-sources</id> 
         <goals> 
          <goal>jar-no-fork</goal> 
         </goals> 
        </execution> 
       </executions> 
      </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> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-gpg-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>sign-artifacts</id> 
         <phase>verify</phase> 
         <goals> 
          <goal>sign</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.sonatype.plugins</groupId> 
       <artifactId>nexus-staging-maven-plugin</artifactId> 
       <version>1.6.7</version> 
       <extensions>true</extensions> 
       <configuration> 
        <serverId>ossrh</serverId> 
        <nexusUrl>https://oss.sonatype.org/</nexusUrl> 
        <autoReleaseAfterClose>true</autoReleaseAfterClose> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

7) çalıştırın Maven

Maven'in parolanızı soracaktır

mvn clean deploy 

8) sizin JIRA bilet Comment

Bu, grup kimliğinizin merkeziyle senkronizasyonu tetikler.

I have promoted my first release. Thanks.


Kaynaklar:

OSSRH Guide

Deploy with Maven

PGP Signatures

İlgili konular