วิธีสร้างและเผยแพร่ไลบรารี Java ที่มีประโยชน์


9

ฉันเพิ่งทำงานกับคลาส Java ที่สร้างพีชคณิตต่อรายการของวัตถุ ไม่ว่าในกรณีใดฉันต้องการให้ห้องสมุดนี้เสนอต่อสาธารณะดังนั้นฉันมีคำถามหลายข้อ:

  • ห้องสมุดส่วนใหญ่ผมเห็นมีการตั้งชื่อนี้แพคเกจที่มีความซับซ้อนโดยเฉพาะรวมทั้ง/com orgมีแบบแผนสำหรับสิ่งเหล่านี้หรือเป็นpermutationsแพคเกจเพียงพอหรือไม่
  • มีรูปแบบเฉพาะสำหรับการเผยแพร่เหล่านี้หรือไม่ ฉันควรรวม WARS แยกต่างหากสำหรับซอร์สโค้ด / javadoc หรือไม่
  • ฉันมีไฟล์ในที่เก็บ GitHub ฉันเดาว่าฉันสามารถให้บริการไฟล์ได้ที่นั่น แต่ฉันจะให้คนหา repo ของฉันได้อย่างไร

การประชุมสำหรับการตั้งชื่อแพ็คเกจเป็นโดเมนอินเทอร์เน็ตที่กลับรายการ
Daniel Moura

2
และถ้าฉันไม่มีโดเมน
Amir Rachum

1
@ Amir: ถ้าอย่างนั้นฉันคิดว่าบางทีสิ่งที่ชอบamirrachum.util.permutationsอาจจะดี
FrustratedWithFormsDesigner

อย่างอื่นที่คุณอาจต้องการคิด - คุณต้องการใบอนุญาตรหัสนี้อย่างไร ทุกคนสามารถทำสิ่งที่พวกเขาต้องการกับมันได้หรือไม่ คุณต้องการใช้ในโครงการ FOSS หรือไม่หากคุณใช้ในซอฟต์แวร์ลิขสิทธิ์ (ให้เครดิตกับคุณ) ดูใบอนุญาตโอเพนซอร์ซที่หลากหลาย (GPL, LGPL, Mozilla, Apache, MIT, BSD) และตัดสินใจว่าคุณต้องการใช้ใบใด
MatrixFrog

คำตอบ:


9
  • วิธีมาตรฐานในการเผยแพร่ (นอกเหนือจากซอร์สโค้ดบน GitHub) คือการเผยแพร่ JAR / WAR อย่างเป็นทางการไปยังMaven Centralซึ่งเครื่องมือสร้างจำนวนมาก (Maven, Gradle, Ant / Ivy) ใช้เพื่อทำให้ห้องสมุดเป็นที่พึ่ง การทำเช่นนี้วิธีที่ดีที่สุดคือการไปผ่านกระบวนการ Nexus

  • ถือว่าเป็นมิตรกับโฮสต์ JAR / WARs เดียวกันบนโค้ดโฮสติ้ง repo เช่น Sourceforge หรือ GitHub

  • ในแง่ของโดเมนของคุณ ฉันขอแนะนำให้คุณซื้อ firstnamelastname.net/org/com และใช้เป็นแบบแผนการตั้งชื่อของคุณ (เช่นสำหรับฉันมันคือ net.martijnverburg.foobar) มิฉะนั้นการใช้โดเมน Github ตามที่ @Daniel Moura แนะนำก็เป็นโดเมนที่ดี

  • เพื่อเผยแพร่บล็อกเกี่ยวกับมันพูดเบาและรวดเร็วส่งให้ข่าวแฮกเกอร์ Reddit, Digg, Slashdot, Dzone, TSS, Javaworld ฯลฯ

HTH!


+1 สำหรับกระบวนการ Nexus - มีประโยชน์มากในการทำให้ผู้พัฒนารายอื่นใช้และดังนั้นจึงตรวจสอบห้องสมุดของคุณ
Gary Rowe

3

หากคุณได้ผลักดันให้รหัสของคุณ GitHub แล้วร่วมกันในห้องสมุดของคุณ (ขวด) ได้โดยง่ายJitPack

ผู้ใช้ของคุณจะต้องเพิ่มที่เก็บไปยัง build.gradle ของพวกเขา:

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

และที่เก็บ GitHub ของคุณเป็นการอ้างอิง:

dependencies {
    // ...
    compile 'com.github.YourUsername:Repo:Release'
}

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

นอกจากนี้ยังมีคำแนะนำเกี่ยวกับวิธีการเตรียมโครงการและตัวอย่างสำหรับการเพิ่มขวดแหล่งข้อมูล

ไม่จำเป็นต้องมีชื่อโดเมนดังนั้น groupId ของคุณจะกลายเป็น com.github.Username นอกจากนี้คุณยังสามารถใช้สำหรับการตั้งชื่อแพ็คเกจ


2

ห้องสมุดส่วนใหญ่ที่ฉันเห็นมีการตั้งชื่อแพ็คเกจที่ซับซ้อนนี้โดยเฉพาะรวมถึง com / org มีแบบแผนสำหรับสิ่งเหล่านี้หรือเป็นแพคเกจการเรียงสับเปลี่ยนเพียงพอหรือไม่

มีคำแนะนำจาก Oracle เกี่ยวกับวิธีการตั้งชื่อแพคเกจของคุณ เหตุผลสำหรับการประชุมการตั้งชื่อนี้คือการลดการซ้ำซ้อน หากทุกคนใช้ชื่อที่สั้นและง่ายอาจเป็นไปได้มากว่าโครงการจะมีสองpermutationแพ็คเกจ หากชื่อชั้นหนึ่งเหมือนกันจะมีความขัดแย้งในการตั้งชื่อ สิ่งต่าง ๆ อาจสร้างความสับสนให้กับผู้พัฒนาหากไม่มีการตั้งชื่อความขัดแย้งที่ป้องกันไม่ให้มีการแก้ไขชั้นเรียน

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

มีรูปแบบเฉพาะสำหรับการเผยแพร่เหล่านี้หรือไม่ ฉันควรรวม WARS แยกต่างหากสำหรับซอร์สโค้ด / javadoc หรือไม่

ไม่มีรูปแบบเฉพาะ อย่างน้อยที่สุดซอร์สและสคริปต์สร้าง build (Make, Ant, Maven) เป็นเรื่องดีที่มี JARs หรือ WARS เตรียมไว้ล่วงหน้า แต่ไม่จำเป็น บางโปรเจ็กต์รวมถึง Javadoc ในไลบรารีส่วนอื่นอาจสร้าง JAR สองอัน (อันที่มี Javadoc และอีกอันที่ไม่มี) มันอาจเป็นความคิดที่ดีที่จะเผยแพร่ Javadoc ของคุณบนอินเทอร์เน็ตหากโซลูชันการโฮสต์โครงการของคุณอนุญาต

ฉันมีไฟล์ในที่เก็บ GitHub ฉันเดาว่าฉันสามารถให้บริการไฟล์ได้ที่นั่น แต่ฉันจะให้คนหา repo ของฉันได้อย่างไร

โฆษณามัน เริ่มต้นด้วยการแสดงให้เพื่อนสองสามคนเห็น บล็อกเกี่ยวกับมัน แบ่งปันลิงก์บนอินเทอร์เน็ต หาคนที่มีปัญหาที่พวกเขาสามารถแก้ไขได้โดยใช้ห้องสมุดนี้ (แต่ต้องแน่ใจว่าคุณเปิดเผยว่าคุณได้สร้างห้องสมุด)

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