การโฮสต์ที่เก็บ Maven บน GitHub


312

ฉันมีห้องสมุดที่เปิดแหล่งเล็ก ๆ ที่ฉันใช้งานบน GitHub ฉันต้องการให้นักพัฒนาซอฟต์แวร์รายอื่นสามารถใช้งานผ่าน maven ได้ แต่ฉันไม่ต้องการเรียกใช้เซิร์ฟเวอร์ Nexus ของตัวเองและเนื่องจากเป็นทางแยกฉันไม่สามารถปรับใช้กับ oss.sonatype.org ได้อย่างง่ายดาย

สิ่งที่ฉันต้องการทำคือปรับใช้กับ gitHub เพื่อให้ผู้อื่นสามารถเข้าถึงได้โดยใช้ maven วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?


5
คุณพบปัญหาด้านลิขสิทธิ์ใน OSS Sonatype อย่างไร แค่อยากรู้ตั้งแต่ฉันใช้มันเอง
Archimedes Trajano

5
มีเครื่องมือที่ช่วยให้คุณเปิดเผย GitHub repo ของคุณผ่าน maven ได้โดยตรง jitpack.io stackoverflow.com/a/28483461/3975649
metrimer

1
Github ยังประกาศแพ็คเกจรีจิสตรีที่สนับสนุน maven ขณะนี้อยู่ในรุ่นเบต้าสาธารณะ: github.com/features/package-registry
Kaan

คำตอบ:


484

ทางออกที่ดีที่สุดที่ฉันสามารถค้นหาได้ประกอบด้วยขั้นตอนเหล่านี้:

  1. สร้างสาขาที่เรียกว่า mvn-repoโฮสต์สิ่งประดิษฐ์ maven ของคุณ
  2. ใช้ github site-maven-pluginเพื่อพุชสิ่งประดิษฐ์ของคุณไปที่ github
  3. กำหนดค่า maven ให้ใช้รีโมตของคุณmvn-repoเป็นที่เก็บ maven

มีประโยชน์หลายประการในการใช้วิธีนี้:

  • สิ่งประดิษฐ์ Maven จะถูกเก็บแยกจากแหล่งของคุณในสาขาแยกที่เรียกว่าmvn-repoเหมือนหน้า Github จะถูกเก็บไว้ในสาขาแยกที่เรียกว่าgh-pages (ถ้าคุณใช้ GitHub หน้า)
  • ไม่เหมือนกับโซลูชันอื่น ๆ ที่เสนอ แต่ไม่ขัดแย้งกับของคุณ gh-pagesหากคุณใช้งาน
  • เชื่อมโยงกับเป้าหมายการปรับใช้อย่างเป็นธรรมชาติดังนั้นจึงไม่มีคำสั่ง maven ใหม่ให้เรียนรู้ เพียงใช้mvn deployตามปกติ

วิธีทั่วไปที่คุณปรับใช้สิ่งประดิษฐ์กับ repo maven ระยะไกลคือการใช้ mvn deployดังนั้นขอปะเข้าไปในกลไกนั้นสำหรับการแก้ปัญหานี้

ก่อนอื่นให้บอก maven เพื่อปรับใช้สิ่งประดิษฐ์กับตำแหน่งชั่วคราวในไดเรกทอรีเป้าหมายของคุณ เพิ่มลงในของคุณ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คุณจะเห็นว่ามันใช้งานพื้นที่เก็บข้อมูลของคุณเพื่อ Maven ขั้นตอนต่อไปคือให้ไปอัปโหลดไดเรกทอรีนั้นไปที่ GitHub

เพิ่มข้อมูลการตรวจสอบสิทธิ์ของคุณเพื่อ~/.m2/settings.xmlให้ github site-maven-pluginสามารถส่งไปที่ GitHub ได้:

<!-- 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ว่าไม่มีใครสามารถอ่านรหัสผ่านของคุณในไฟล์ได้ถ้ามีคนรู้วิธีทำให้ไซต์ -maven-plugin พรอมต์สำหรับรหัสผ่านแทนที่จะต้องใช้ในไฟล์ config โปรดแจ้งให้เราทราบ)

จากนั้นบอก GitHub site-maven-pluginเกี่ยวกับเซิร์ฟเวอร์ใหม่ที่คุณเพิ่งกำหนดค่าโดยเพิ่มสิ่งต่อไปนี้ใน pom ของคุณ:

<properties>
    <!-- github server corresponds to entry in ~/.m2/settings.xml -->
    <github.global.server>github</github.global.server>
</properties>

สุดท้ายกำหนดค่าsite-maven-pluginให้อัปโหลดจาก repo ชั่วคราวของคุณไปยังmvn-repoสาขาของคุณใน Github:

<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อีกครั้ง คุณควรเห็น maven-deploy-plugin "อัปโหลด" ไฟล์ไปยังพื้นที่จัดเก็บโลคัลของคุณในไดเรกทอรีเป้าหมายจากนั้นไซต์ -maven-plugin จะส่งไฟล์เหล่านั้นและส่งไปยังเซิร์ฟเวอร์

[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สาขาและตรวจสอบว่าไบนารีทั้งหมดของคุณอยู่ที่นั่นแล้ว

ป้อนคำอธิบายรูปภาพที่นี่

ขอแสดงความยินดี!

ตอนนี้คุณสามารถปรับใช้สิ่งประดิษฐ์ Maven mvn clean deployของคุณเพื่อซื้อคืนภาคประชาชนคนจนโดยเพียงแค่การทำงาน

มีอีกหนึ่งขั้นตอนที่คุณต้องการทำซึ่งก็คือการกำหนดค่า poms ใด ๆ ที่ขึ้นอยู่กับ pom ของคุณเพื่อทราบว่าที่เก็บของคุณอยู่ที่ไหน เพิ่มตัวอย่างต่อไปนี้ลงใน pom ของโครงการใด ๆ ที่ขึ้นอยู่กับโครงการของคุณ:

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

ตอนนี้โปรเจ็กต์ใด ๆ ที่ต้องใช้ไฟล์ jar ของคุณจะทำการดาวน์โหลดจากที่เก็บ github maven ของคุณโดยอัตโนมัติ

แก้ไข: เพื่อหลีกเลี่ยงปัญหาที่กล่าวถึงในความคิดเห็น ('ข้อผิดพลาดในการสร้างการกระทำ: คำขอไม่ถูกต้องสำหรับ' คุณสมบัติ / ชื่อ 'ไม่มีไม่มีสตริง') ตรวจสอบให้แน่ใจว่าคุณระบุชื่อในโปรไฟล์ของคุณใน GitHub


25
โปรดทราบว่าโซลูชันนี้จะเขียนทับสิ่งประดิษฐ์ก่อนหน้าของคุณทุกครั้งที่คุณปรับใช้ สิ่งนี้เหมาะสำหรับที่เก็บสแน็ปช็อต แต่ไม่เหมาะสำหรับสิ่งประดิษฐ์ที่นำออกใช้ หากต้องการปิดใช้งานลักษณะการทำงานให้ตั้งค่าการกำหนดค่า<merge>true</merge>ไซต์ -maven-plugin ของคุณ ถ้าคุณทำเช่นนั้นฉันคิดว่าคุณจะต้องสร้าง mvn-repo branch ด้วยตนเองใน github และลบไฟล์ทั้งหมดในครั้งแรก
emmby

13
+1 ฉลาดและนำเสนอได้ดี วิจารณ์เท่านั้นฉันว่าคุณไม่ได้มีการเชื่อมโยงไปยังเว็บไซต์ Maven ปลั๊กอิน: github.com/github/maven-plugins ขอบคุณฉันกำลังมองหาวิธีในการเผยแพร่เว็บไซต์ Maven ของฉันเพื่อ GitHub!
Mark O'Connor

7
วิธีการนี้ใช้ไม่ได้เมื่อใช้การตรวจสอบสิทธิ์แบบสองปัจจัยบน github ดูบันทึกของฉันในปัญหาที่นี่: github.com/github/maven-plugins/issues/36#issuecomment-31005606
Dag

18
เพื่อให้การทำงานนี้สำหรับโครงการหลายโมดูลคุณยังสามารถใช้<altDeploymentRepository>internal.repo::default::file://${user.dir}/target/mvn-repo</altDeploymentRepository>กับmaven-deploy-pluginและ<outputDirectory>${user.dir}/target/mvn-repo</outputDirectory>ด้วยเว็บไซต์ Maven ปลั๊กอิน สิ่งนี้จะนำสิ่งประดิษฐ์ทั้งหมดไปใช้ในโครงการรูท ("พาเรนต์") และส่งไปยังไดเร็กตอรี่หลักที่เกี่ยวข้องบน github มิฉะนั้นการสร้างของแต่ละโมดูลย่อยจะเขียนทับของโมดูลย่อยที่สร้างขึ้นก่อน ...
sd

7
คำแนะนำสองข้อที่ทำให้ใช้งานได้ (อย่างน้อยสำหรับฉัน): ตั้งค่าปลั๊กอิน Github เวอร์ชันปัจจุบัน (ตอนนี้จะเป็น 0.11) ฉันขอแนะนำให้ทุกคนใช้โทเค็น OAUTH แทนรหัสผ่าน คุณสามารถสร้างได้ใน 'การตั้งค่า -> แอปพลิเคชัน -> โทเค็นการเข้าถึงส่วนบุคคล' กว่าที่คุณจะสามารถแทรกเข้าไปใน POM ผ่านและเก็บโทเค็นเป็นตัวแปรสภาพแวดล้อม <github.global.userName>YourUserName</github.global.userName> <github.global.password>${GITHUB_OAUTH_TOKEN</github.global.password>
ฟลอเรียนล็อคช์

120

อย่าใช้ GitHub เป็นที่เก็บ Maven

แก้ไข: ตัวเลือกนี้ได้รับคะแนนโหวตลงมาก แต่ไม่มีความเห็นเกี่ยวกับสาเหตุ นี่คือตัวเลือกที่ถูกต้องโดยไม่คำนึงถึงความสามารถด้านเทคนิคในการโฮสต์บน GitHub การโฮสต์บน GitHub นั้นไม่ถูกต้องด้วยเหตุผลทั้งหมดที่ระบุไว้ด้านล่างและไม่มีความคิดเห็นฉันไม่สามารถปรับปรุงคำตอบเพื่อชี้แจงปัญหาของคุณได้

ตัวเลือกที่ดีที่สุด - ทำงานร่วมกับโครงการเดิม

ตัวเลือกที่ดีที่สุดคือการโน้มน้าวให้โครงการต้นฉบับรวมการเปลี่ยนแปลงของคุณและยึดติดกับต้นฉบับ

ทางเลือก - รักษาทางแยกของคุณ

เนื่องจากคุณได้แยกไลบรารีโอเพนซอร์สและส้อมของคุณยังเป็นโอเพ่นซอร์สคุณสามารถอัปโหลดส้อมของคุณไปยัง Maven Central (อ่านคำแนะนำในการอัปโหลดสิ่งประดิษฐ์ไปยังพื้นที่เก็บข้อมูลส่วนกลาง ) โดยให้ใหม่groupIdและอาจใหม่artifactIdและอาจจะใหม่

พิจารณาตัวเลือกนี้เฉพาะเมื่อคุณเต็มใจที่จะรักษาทางแยกนี้ไว้จนกว่าการเปลี่ยนแปลงจะรวมอยู่ในโครงการเดิมและจากนั้นคุณควรละทิ้งตัวเลือกนี้

พิจารณาอย่างหนักว่าส้อมเป็นตัวเลือกที่เหมาะสมหรือไม่ อ่านผลลัพธ์ Google มากมายสำหรับ'ทำไมไม่แยก'

เหตุผล

การขยายพื้นที่เก็บข้อมูลของคุณด้วยเหยือกจะเพิ่มขนาดการดาวน์โหลดโดยไม่มีประโยชน์

โถคือ outputโครงการของคุณสามารถสร้างใหม่ได้ตลอดเวลาจากinputsนั้นและ repo GitHub ของคุณควรมีเพียงinputsของคุณควรมีเพียง

ไม่เชื่อฉัน จากนั้นตรวจสอบผลการค้นหาของ Google 'อย่าเก็บไบนารีไว้ในคอมไพล์'ไบนารีในคอมไพล์'

ความช่วยเหลือของ GitHub การทำงานกับไฟล์ขนาดใหญ่จะบอกคุณในสิ่งเดียวกัน jar นั้นเป็นที่ยอมรับไม่ใหญ่ แต่ใหญ่กว่าซอร์สโค้ดและเมื่อไหถูกสร้างขึ้นโดยรีลีสพวกเขาไม่มีเหตุผลที่จะต้องมีเวอร์ชัน - นั่นคือสิ่งที่รีลีสใหม่ใช้สำหรับ

การกำหนดหลาย repos ใน pom.xml ของคุณทำให้การ build ของคุณช้าลงตามจำนวนที่เก็บคูณด้วยจำนวน Artifact

Stephen Connolly พูดว่า :

หากใครเพิ่ม repo ของคุณพวกเขาจะส่งผลกระทบต่อประสิทธิภาพการสร้างเนื่องจากตอนนี้พวกเขามี repo อื่นเพื่อตรวจสอบสิ่งประดิษฐ์ต่อ ... ไม่ใช่ปัญหาใหญ่ถ้าคุณเพียงแค่เพิ่ม repo หนึ่ง ... แต่ปัญหาก็เพิ่มขึ้นและสิ่งต่อไปที่คุณจะรู้ maven build กำลังตรวจสอบ 50 repos สำหรับสิ่งประดิษฐ์ทุกชิ้นและเวลาในการสร้างคือสุนัข

ถูกตัอง! Maven ต้องตรวจสอบทุกสิ่งประดิษฐ์ (และการอ้างอิง) ที่กำหนดไว้ใน pom.xml ของคุณกับทุกที่เก็บที่คุณกำหนดเนื่องจากเวอร์ชันใหม่กว่าอาจมีอยู่ในที่เก็บใด ๆ เหล่านั้น

ลองด้วยตัวคุณเองแล้วคุณจะรู้สึกถึงความเจ็บปวดจากการสร้างที่ช้า

สถานที่ที่ดีที่สุดสำหรับสิ่งประดิษฐ์อยู่ใน Maven Central เนื่องจากเป็นศูนย์กลางสำหรับไหและสิ่งนี้หมายความว่างานสร้างของคุณจะตรวจสอบเพียงครั้งเดียวสถานที่

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับที่เก็บได้ที่เอกสารประกอบของ Maven เกี่ยวกับคลังเก็บข้อมูลเบื้องต้น


3
เห็นด้วยอย่างยิ่งและเหมาะสมสำหรับส้อมที่คุณต้องการหลีกเลี่ยงชั่วขณะ แต่นี่อาจเป็นค่าใช้จ่ายจำนวนมากเพียงแค่แพทช์เล็ก ๆ กับโครงการที่มีอยู่
emmby

5
ฉันสงสัยว่า Github มีปัญหากับมันเนื่องจากพวกเขาเขียนปลั๊กอินที่เปิดใช้งานความสามารถนี้ ฉันเห็นด้วยมันน้อยกว่าความคิด แต่ c'est la vie
Phy6

4
ไม่สามารถปรับใช้โครงการโอเพ่นซอร์สใน Sonatype ได้เสมอไป ตัวอย่างเช่นเมื่อโครงการของคุณขึ้นอยู่กับโครงการโอเพนซอร์สอื่นที่ยังไม่ได้ปรับใช้ (และไม่สามารถปรับใช้ได้เนื่องจากไม่เป็นไปตามข้อกำหนดของ sonatype)
Gab

1
@ Gab แล้วการพึ่งพาของคุณไม่ใช่โอเพ่นซอร์สจริงๆ คุณควรติดต่อโครงการอื่นและอธิบายเรื่องนี้เพื่อให้พวกเขาแก้ไขปัญหาสิทธิ์ใช้งานของพวกเขา (ซุนเป็นผู้กระทำความผิดของพฤติกรรมนี้ในอดีต)
Bae

1
@Bae มันไม่ใช่คำถามของการออกใบอนุญาต เจ้าของโครงการบางคนตัดสินใจที่จะไม่เผยแพร่ในส่วนกลางเพราะมันไม่ได้เป็นเรื่องสำคัญ วิธีการของคุณเป็นไปไม่ได้ในโลกแห่งความเป็นจริง หากคุณต้องการที่จะทดสอบ: โน้มน้าวนี้เพื่อเผยแพร่บนกลางcode.google.com/p/sd-dss มันเป็นขนาดใหญ่โครงการที่มาเปิดรับการสนับสนุนจากชุมชนของสหภาพยุโรป :)
Gab

48

คุณสามารถใช้JitPack (ฟรีสำหรับที่เก็บ Git สาธารณะ) เพื่อเปิดเผยที่เก็บ GitHub ของคุณเป็นสิ่งประดิษฐ์ Maven มันง่ายมาก. ผู้ใช้ของคุณจะต้องเพิ่มสิ่งนี้ใน pom.xml ของพวกเขา:

  1. เพิ่มที่เก็บ:
<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>
  1. เพิ่มการพึ่งพา:
<dependency>
    <groupId>com.github.User</groupId>
    <artifactId>Repo name</artifactId>
    <version>Release tag</version>
</dependency>

ในฐานะที่ตอบอื่น ๆความคิดที่ว่าจะสร้าง JitPack repo GitHub ของคุณและจะทำหน้าที่ไห ความต้องการคือคุณมีไฟล์บิลด์และรีลีส GitHub

สิ่งที่ดีคือคุณไม่ต้องจัดการกับการปรับใช้และการอัปโหลด เนื่องจากคุณไม่ต้องการบำรุงรักษาที่เก็บสิ่งประดิษฐ์ของคุณเองจึงเป็นสิ่งที่เหมาะสมกับความต้องการของคุณ


JitPack ค่อนข้างดี แต่บังคับให้คุณเปลี่ยนทุกกลุ่มที่คุณมี พวกเขาบอกว่าสามารถหลีกเลี่ยงได้ แต่ต้องการให้คุณเพิ่มรายการไปยัง DNS ของ บริษัท ของคุณซึ่งส่วนใหญ่จะทำไม่ได้โดยสิ้นเชิง ฉันลองใช้ JP ครั้งเดียวจากนั้นฉันคิดว่ามันโง่เกินไปที่จะเดินหน้าต่อไป
zakmck

1
ไม่จำเป็นต้องเปลี่ยน groupId ของโครงการของคุณ คุณยังสามารถติดตั้งโครงการเหล่านั้นโดยใช้ 'com.github.User' groupId แต่บางทีกรณีการใช้ของคุณอาจแตกต่างกัน
Andrejs

ใช่มันเป็นอย่างมาก เพราะฉันมีพวกมันอยู่แล้วนับหมื่นรอบองค์กรและผู้ใช้ภายนอกและเพราะฉันต้องการแบรนด์ของตัวเอง วิธีโง่ ๆ ที่จะพยายามบังคับให้ฉันเข้ากลุ่มของตัวเองเป็นวิธีหนึ่งที่ฉันคิดว่าจะเปลี่ยนอาชีพ
zakmck

ยิ่งกว่านั้นฉันไม่เห็นความต้องการใด ๆ ที่แท้จริงสำหรับพวก JP ที่จะโยนข้อกำหนดดังกล่าวมาที่ฉัน (พวกเขาสามารถขัดขวางคำขอ Maven จากข้อกำหนดพื้นที่เก็บข้อมูล)
zakmck

1
เป็นความคิดที่ดีฉันได้ทำแล้ว: github.com/jitpack/jitpack.io/issues/209ขอบคุณ :-)
zakmck

9

อีกทางเลือกหนึ่งคือการใช้เว็บโฮสติ้งที่มีการสนับสนุน webdav คุณจะต้องมีพื้นที่สำหรับบางแห่งนี้แน่นอน แต่มันเป็นเรื่องง่ายในการตั้งค่าและเป็นทางเลือกที่ดีในการใช้งานเซิร์ฟเวอร์ Nexus แบบเต็มรูปแบบ

เพิ่มสิ่งนี้ไปยังส่วนการสร้างของคุณ

     <extensions>
        <extension>
        <artifactId>wagon-webdav-jackrabbit</artifactId>
        <groupId>org.apache.maven.wagon</groupId>
        <version>2.2</version>
        </extension>
    </extensions>

เพิ่มสิ่งนี้ในส่วนการจัดการการกระจายของคุณ

<repository>
    <id>release.repo</id>
    <url>dav:http://repo.jillesvangurp.com/releases/</url>
</repository>

สุดท้ายให้แน่ใจว่าได้ตั้งค่าการเข้าถึงพื้นที่เก็บข้อมูลใน settings.xml ของคุณ

เพิ่มลงในส่วนเซิร์ฟเวอร์ของคุณ

    <server>
        <id>release.repo</id>
        <username>xxxx</username>
        <password>xxxx</password>
    </server>

และคำจำกัดความของส่วนที่เก็บข้อมูลของคุณ

            <repository>
                <id>release.repo</id>
                <url>http://repo.jillesvangurp.com/releases</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>

สุดท้ายถ้าคุณมีโฮสติ้ง php มาตรฐานคุณสามารถใช้ sabredav เพื่อเพิ่มความสามารถของ webdav

ข้อดี: คุณมีที่เก็บ maven ของคุณเองข้อเสีย: คุณไม่มีความสามารถในการจัดการใด ๆ ใน nexus; คุณต้องติดตั้ง webdav บางแห่ง


9

ตั้งแต่ปี 2019 คุณสามารถใช้ฟังก์ชั่นใหม่ที่เรียกว่ารีจิสตรี Githubได้

โดยทั่วไปกระบวนการคือ:

  • สร้างโทเค็นการเข้าถึงส่วนบุคคลใหม่จากการตั้งค่า GitHub
  • เพิ่มที่เก็บข้อมูลและโทเค็นข้อมูลในของคุณ settings.xml
  • ปรับใช้โดยใช้

    mvn deploy -Dregistry=https://maven.pkg.github.com/yourusername -Dtoken=yor_token  

ตั้งแต่ปี 2019 นี่เป็นตัวเลือกที่ดีที่สุด
HRJ

1
แต่สำหรับการใช้มันโดยคนอื่นก็ดูเหมือนว่าเขา / เธอต้องการที่จะ settings.xml กำหนดค่าที่มี URL ที่เกี่ยวข้องและข้อมูลรับรองความถูกต้อง
Hemu

แปลกมาก ... คุณสร้างแพคเกจสาธารณะของคุณ แต่คนอื่นจำเป็นต้องมีการรับรองความถูกต้องก่อนที่จะได้รับมัน
Amerousful

อย่างไรก็ตามสำหรับ repos ส่วนตัวหลังจากประเพณีการรับรอง / เดือนการกำหนดราคาเข้ามาในรูปภาพ
Lokeshwar Tailor

8

Bintrayเป็นอีกทางเลือกหนึ่งที่ให้บริการพื้นที่เก็บข้อมูล Maven ฟรี นั่นอาจเป็นทางเลือกที่ดีสำหรับSonatype OSSและ Maven Central หากคุณไม่ต้องการเปลี่ยนชื่อกลุ่ม แต่อย่างน้อยโปรดใช้ความพยายามเพื่อให้การเปลี่ยนแปลงของคุณผสานรวมกับอัปสตรีมหรือเปลี่ยนชื่อและเผยแพร่ไปยัง Central มันทำให้ผู้อื่นใช้ส้อมของคุณง่ายขึ้น


3
ฉันไม่อยากจะเชื่อเลยเมื่อฉันลองใช้ แต่ Bintray ไม่รองรับสแนปชอต ไร้ประโยชน์
zakmck

6
มันไม่ฟรีอีกต่อไป $ 150 ต่อเดือน
AndroidDev

ฉันคิดว่ามันเป็นค่าใช้จ่ายสำหรับโครงการซอฟต์แวร์โอเพนซอร์ส: jfrog.com/open-source
iBiber

0

หากคุณมีเพียงaarหรือjarไฟล์ตัวเองหรือเพียงแค่ไม่ต้องการที่จะใช้ปลั๊กอิน - ฉันได้สร้างสคริปต์เปลือกง่าย คุณสามารถทำสิ่งเดียวกันกับมันได้ - เผยแพร่สิ่งประดิษฐ์ของคุณไปยัง Github และใช้เป็น repo Maven สาธารณะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.