सबसे अच्छा समाधान जो मैंने पाया है, इन चरणों में शामिल हैं:
mvn-repo
अपनी मावेन कलाकृतियों की मेजबानी के लिए एक शाखा बनाएं ।
- अपनी कलाकृतियों को गितुब में धकेलने के लिए जीथब साइट-मावेन-प्लगइन का उपयोग करें ।
- अपने रिमोट
mvn-repo
को मावेन रिपॉजिटरी के रूप में उपयोग करने के लिए मावेन को कॉन्फ़िगर करें ।
इस दृष्टिकोण का उपयोग करने के कई लाभ हैं:
- मावेन कलाकृतियों को एक अलग शाखा में अपने स्रोत से अलग रखा जाता है जिसे कहा जाता है
mvn-repo
, जैसे कि जीथब पृष्ठ को एक अलग शाखा में रखा जाता है gh-pages
(यदि आप गितुब पृष्ठों का उपयोग करते हैं)
- कुछ अन्य प्रस्तावित समाधानों के विपरीत, यह आपके साथ संघर्ष नहीं करता है
gh-pages
यदि आप उनका उपयोग कर रहे हैं।
- स्वाभाविक रूप से तैनाती लक्ष्य के साथ संबंध बनाता है ताकि सीखने के लिए कोई नई मावेन कमांड न हों।
mvn deploy
जैसा आप सामान्य रूप से करते हैं वैसे ही उपयोग करें
जिस तरह से आप दूरस्थ मावेन रेपो में कलाकृतियों को तैनात करते हैं mvn deploy
, उसका उपयोग करना है , तो चलो इस समाधान के लिए उस तंत्र में पैच करें।
सबसे पहले, मावेन को अपने लक्ष्य निर्देशिका के अंदर एक अस्थायी मंचन स्थान पर कलाकृतियों को तैनात करने के लिए कहें। इसे अपने में जोड़ें pom.xml
:
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Temporary Staging Repository</name>
<url>file://${project.build.directory}/mvn-repo</url>
</repository>
</distributionManagement>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
</configuration>
</plugin>
</plugins>
अब दौड़ने की कोशिश करो mvn clean deploy
। आप देखेंगे कि इसने आपके मावेन भंडार को तैनात किया है target/mvn-repo
। अगला कदम यह है कि उस निर्देशिका को GitHub पर अपलोड करना है।
अपनी प्रमाणीकरण जानकारी जोड़ें ~/.m2/settings.xml
ताकि गिटहब GitHub site-maven-plugin
को धक्का दे सके:
<!-- NOTE: MAKE SURE THAT settings.xml IS NOT WORLD READABLE! -->
<settings>
<servers>
<server>
<id>github</id>
<username>YOUR-USERNAME</username>
<password>YOUR-PASSWORD</password>
</server>
</servers>
</settings>
(जैसा कि नोट किया गया है, कृपया सुनिश्चित करें chmod 700 settings.xml
कि कोई भी आपके पासवर्ड को फ़ाइल में नहीं पढ़ सकता है। यदि कोई व्यक्ति यह जानता है कि पासवर्ड फ़ाइल के लिए साइट-मावेन-प्लग-इन कैसे बनाया जाए, तो इसकी आवश्यकता है कि आप इसे कॉन्फिगर करें।)
फिर GitHub site-maven-plugin
को उस नए सर्वर के बारे में बताएं जिसे आपने अपने पोम में निम्नलिखित जोड़कर कॉन्फ़िगर किया है:
<properties>
<!-- github server corresponds to entry in ~/.m2/settings.xml -->
<github.global.server>github</github.global.server>
</properties>
अंत में, Github पर site-maven-plugin
अपनी अस्थायी स्टेजिंग रेपो से अपनी mvn-repo
शाखा में अपलोड करने के लिए कॉन्फ़िगर करें :
<build>
<plugins>
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>0.11</version>
<configuration>
<message>Maven artifacts for ${project.version}</message> <!-- git commit message -->
<noJekyll>true</noJekyll> <!-- disable webpage processing -->
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory> <!-- matches distribution management repository url above -->
<branch>refs/heads/mvn-repo</branch> <!-- remote branch name -->
<includes><include>**/*</include></includes>
<repositoryName>YOUR-REPOSITORY-NAME</repositoryName> <!-- github repo name -->
<repositoryOwner>YOUR-GITHUB-USERNAME</repositoryOwner> <!-- github username -->
</configuration>
<executions>
<!-- run site-maven-plugin's 'site' target as part of the build's normal 'deploy' phase -->
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn-repo
शाखा यह आप के लिए बनाया जाएगा, अस्तित्व के लिए जरूरत नहीं है।
अब mvn clean deploy
फिर से चलाओ। आपको अपने स्थानीय स्टेजिंग रिपॉजिटरी में फ़ाइलों को लक्ष्य निर्देशिका में "अपलोड" मावेन-तैनाती-प्लगइन देखना चाहिए, फिर साइट-मावेन-प्लगइन उन फ़ाइलों को कम करके सर्वर पर धकेल दें।
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building DaoCore 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
[INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ greendao ---
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.jar (77 KB at 2936.9 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.pom (3 KB at 1402.3 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/maven-metadata.xml (768 B at 150.0 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/maven-metadata.xml (282 B at 91.8 KB/sec)
[INFO]
[INFO] --- site-maven-plugin:0.7:site (default) @ greendao ---
[INFO] Creating 24 blobs
[INFO] Creating tree with 25 blob entries
[INFO] Creating commit with SHA-1: 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] Updating reference refs/heads/mvn-repo from ab7afb9a228bf33d9e04db39d178f96a7a225593 to 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.595s
[INFO] Finished at: Sun Dec 23 11:23:03 MST 2012
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
अपने ब्राउज़र में github.com पर जाएं, mvn-repo
शाखा का चयन करें , और सत्यापित करें कि आपके सभी बायनेरिज़ अब वहां हैं।
बधाई हो!
अब आप अपनी मावे की कलाकृतियों को एक गरीब आदमी के सार्वजनिक रेपो में बस चलाकर तैनात कर सकते हैं mvn clean deploy
।
एक और कदम है जो आप उठाना चाहते हैं, जो कि किसी भी पोम को कॉन्फ़िगर करना है जो आपके पॉम पर निर्भर करता है यह जानने के लिए कि आपका रिपॉजिटरी कहां है। निम्नलिखित स्निपेट को किसी भी प्रोजेक्ट के पोम में जोड़ें जो आपकी परियोजना पर निर्भर करता है:
<repositories>
<repository>
<id>YOUR-PROJECT-NAME-mvn-repo</id>
<url>https://github.com/YOUR-USERNAME/YOUR-PROJECT-NAME/raw/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
अब किसी भी परियोजना को आपकी जार फ़ाइलों की आवश्यकता होती है, वे स्वचालित रूप से आपके गितुब मावेन भंडार से डाउनलोड करेंगे।
संपादित करें: टिप्पणियों में वर्णित समस्या से बचने के लिए ('त्रुटि बनाने की गलती: अमान्य अनुरोध।' गुण / नाम 'के लिए, nil एक स्ट्रिंग नहीं है।'), सुनिश्चित करें कि आप github पर अपनी प्रोफ़ाइल में नाम दर्ज करते हैं।