2015-03-04 5 views
8

मैंने एक open source project बनाया है जिसे मैं मैवेन सेंट्रल में प्रकाशित करना चाहता हूं ताकि उपयोगकर्ता पुस्तकालय का उपयोग अपने पोम में बस संदर्भित कर सकें। इसलिए जैसा:मैन्युअल रूप से जेएआर केंद्रीय में कैसे प्रकाशित करें?

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

मैं कई ऑनलाइन ट्यूटोरियल मिल गया है, लेकिन उनमें से कुछ पुराने हो चुके हैं, कुछ पूरी प्रक्रिया को स्वचालित की सलाह देते हैं और इस तरह खुलकर यह जटिल।

उदाहरण के लिए one tutorial आपके जीथ्यूब खाते के लिए एसएसएच कुंजी बनाने की अनुशंसा की जाती है और जब भी मैवेन सेंट्रल को दबाया जाता है तो मैवेन स्वचालित रूप से एक गिट टैग बनाते हैं। हालांकि यह उपयोगी है, इसे शुरू करना जरूरी नहीं है।

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

देता है::

एक अन्य उदाहरण है, Maven के माध्यम से सीधे इसे जारी करने की कोशिश कर भी त्रुटि के कुछ प्रकार देता है

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

जब आप पहली बार यह अक्सर मदद करता है के लिए कुछ कर रहे इसे मैन्युअल रूप से पहले करने के लिए और फिर इसे स्वचालित करें।

मेवेन केंद्रीय में एक जार लगाने के लिए सबसे बुनियादी, नंगे हड्डियों का तरीका क्या है?

उत्तर

10

यह उत्तर मानता है कि आपके पास एक मेवेन आधारित परियोजना है और यह एक पैकेज-सक्षम राज्य में है। mvn package किसी भी त्रुटि के बिना चलना चाहिए।

मेवेन सेंटर में प्रकाशित होने पर आपको एक समूह आईडी का उपयोग करने की आवश्यकता होगी जो आपके द्वारा अपलोड की गई सभी कलाकृतियों की पहचान करेगी। कुछ in.ksharma की तरह। आपको अपनी कलाकृतियों पर हस्ताक्षर करने की भी आवश्यकता होगी ताकि उपयोगकर्ता यह सत्यापित कर सकें कि वे वास्तव में आपसे आ रहे हैं।

तो पहले सोनाटाइप जिरा और create an account पर जाएं, और फिर अपने समूह आईडी को अनुमोदित करने के लिए एक जिरा मुद्दा बनाएं। कुछ this की तरह।

अब आप अपने कलाकृतियों पर हस्ताक्षर करने के लिए एक gpg keypair उत्पन्न:

$ gpg --gen-key 

~/.m2/settings.xml में इस कुंजी को परिभाषित करें:

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

अपने प्रोजेक्ट की पोम फ़ाइल को संशोधित करने और अपने संस्करण के लिए -SNAPSHOT जोड़ देते हैं। तो 0.0.1-BETA0.0.1-BETA-SNAPSHOT बन जाता है। अन्यथा 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]

भी जोड़ें:

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

यह माता पिता पोम maven-gpg-plugin को विन्यस्त अपने जार हस्ताक्षर करने के लिए जैसे कुछ तैयार कार्यक्षमता प्रदान करता है।

अब अपने कलाकृतियों और जीपीजी हस्ताक्षर उत्पन्न करने के लिए mvn release:clean release:prepare चलाएं।Sonatype Nexus को

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

जाओ और अपने क्रेडेंशियल्स के साथ लॉगिन:

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 

अब एक जार में इन पैकेज: यह आप की तरह कुछ दे देंगे। अपलोड करने और अपने बंडल अपलोड करने के लिए जाओ।

enter image description here

फिर, staging repositories अनुभाग पर जाएँ अपने भंडार का चयन करें और रिलीज (अधिक मदद here) पर क्लिक करें। जिरा मुद्दे पर टिप्पणी करें कि आपने आर्टिफैक्ट जारी किया है और कुछ समय प्रतीक्षा करें।

अब अपने उपयोगकर्ताओं को खोज और से central repository विरूपण साक्ष्य का उपयोग कर सकते हैं: enter image description here enter image description here

+0

https://github.com/sonatype/oss-parents org.sonatype कहते हैं। ओएसएस बहिष्कृत है। शायद एक अद्यतन की जरूरत है? वैसे भी इस विस्तृत क्यूए के लिए धन्यवाद! –

+0

बहिष्कृत, मेरा जवाब देखें। –

5

1) अपने Jira खाता बनाएँ: Signup Sonatype


2) कोई नया प्रोजेक्ट बनाएं टिकट (अपने कार्यक्षेत्र का दावा करने के लिए): Create new project ticket


3) एक पीजीपी हस्ताक्षर

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

4) उत्पन्न वितरण आपकी सार्वजनिक कुंजी

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

तुल्यकालन तेजी लाने के लिए कई सर्वरों की कुंजी वितरित करें प्रक्रिया (pgp.mit.edu, keyserver.ubuntu.com ...)


5) अद्यतन अपने ~ .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) अद्यतन अपनी परियोजना पोम।एक्सएमएल

<?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) भागो Maven

Maven अपना पासफ़्रेज़ के लिए पूछेंगे

mvn clean deploy 

8) अपने Jira टिकट टिप्पणी

यह आपके समूह आईडी के लिए केंद्रीय के साथ सिंक्रनाइज़ेशन ट्रिगर करेगा।

I have promoted my first release. Thanks.


संसाधन:

OSSRH Guide

Deploy with Maven

PGP Signatures

संबंधित मुद्दे