คำถามติดแท็ก maven

Maven เป็นเครื่องมือการจัดการโครงการซอฟต์แวร์แบบปลั๊กอินซึ่งคุณสมบัติหลักคือการสร้างซอฟต์แวร์ของคุณโดยอัตโนมัติการจัดการการพึ่งพาและการสร้างรายงานและเอกสาร

6
การเลือกระหว่างโครงการเดี่ยวหรือหลายโครงการในที่เก็บ git?
ในgitสภาพแวดล้อมที่เราได้ทำให้เป็นส่วนใหญ่โครงการเรากำลังเผชิญหนึ่งโครงการต่อพื้นที่เก็บข้อมูลหรือหลายโครงการต่อปัญหาการออกแบบพื้นที่เก็บข้อมูล ลองพิจารณาโครงการที่ทำให้เป็นโมดูล: myProject/ +-- gui +-- core +-- api +-- implA +-- implB วันนี้เรากำลังมีโครงการต่อหนึ่งพื้นที่เก็บข้อมูล มันให้อิสระในการ release แต่ละองค์ประกอบ tag แต่ละองค์ประกอบ แต่มันก็ยังเป็นเรื่องยุ่งยากสำหรับbranchส่วนประกอบที่บ่อยครั้งที่การแตกแขนงนั้นapiต้องการกิ่งไม้ที่เท่ากันcoreและส่วนประกอบอื่น ๆ เนื่องจากเราต้องการreleaseแต่ละองค์ประกอบเรายังสามารถได้รับความยืดหยุ่นที่คล้ายกันโดยใช้หลายโครงการต่อการออกแบบพื้นที่เก็บข้อมูล มีประสบการณ์อะไรบ้างและคุณได้จัดการกับปัญหาเหล่านี้อย่างไร?

1
แยกโครงการขนาดใหญ่เพื่อสร้างโครงการ Maven หลายโมดูล
ฉันกำลังทำงานกับแอปพลิเคชัน Spring-MVC ที่เราใช้ Maven สำหรับการจัดการการพึ่งพา เนื่องจากโครงการมีขนาดใหญ่เราจึงคิดแยกโครงการออกเป็นหลายส่วน ฉันมีข้อสงสัยบางอย่างซึ่งฉันหวังว่าจะได้รับคำตอบที่นี่ ขณะนี้เรากำลังปรับใช้ไฟล์ WAR ไฟล์เดียวเช่นเดียวROOT.warกับ Apache tomcat บนเซิร์ฟเวอร์ของเรา เนื่องจากโครงการมีขนาดใหญ่จึงมีบางส่วนในเว็บแอปเช่นการแจ้งเตือนและอีเมลบริการของบุคคลที่สาม PUSH (Cometd) REST API และอื่น ๆ ปัจจุบันทั้งหมดของพวกเขาอยู่ในสโมสรและขึ้นอยู่กับกันและกัน ตัวอย่างเช่นNotificationวัตถุยังขึ้นอยู่กับPersonวัตถุเนื่องจากการแจ้งเตือนนั้นได้รับการปรับแต่งสำหรับผู้ใช้ จุดประสงค์หลักของการแยกโครงการขนาดใหญ่คือการสามารถทำงานกับแต่ละโมดูลเพื่อแก้ไขข้อผิดพลาดการเพิ่มคุณสมบัติการทดสอบ ฯลฯ และเมื่อพอใจแล้วโมดูลนี้เท่านั้นที่สามารถถูกแทนที่บนเซิร์ฟเวอร์แทนแอปพลิเคชันทั้งหมด เป็นไปได้ไหม อย่างที่ฉันได้พูดไปแล้วก่อนหน้านี้มีการพึ่งพาและการจับคู่ระหว่างวัตถุ สิ่งเหล่านั้นจะได้รับการจัดการในโมดูลย่อยที่แตกต่างกันอย่างไรหรือเพียงแค่งบการนำเข้าจะเปลี่ยนเพื่อรวมโครงการอื่น ๆ ดังที่ฉันได้กล่าวไว้ความตั้งใจคือการทำงานกับแต่ละโมดูลและสามารถปรับใช้ (ดีกว่าร้อนกว่า) ปัจจุบันเรามีไฟล์ WAR ไฟล์เดียวROOT.warเท่านั้น การแยกจะสร้างไฟล์ war หลายไฟล์ซึ่งจะถูกเรียกโดย URL ว่าdomain-name.com/module_name/some_mapping? ขณะนี้ฉันกำลังตรวจสอบเอกสาร แต่นี่คือวัตถุประสงค์หลักที่เราต้องการบรรลุด้วยโมดูลที่จัดทำโดย Maven และสนใจที่จะรู้ว่าสิ่งนี้เป็นไปได้หรือไม่ หากมีข้อมูลเพิ่มเติมใด ๆ ที่จำเป็นโปรดแจ้งให้เราทราบ ขณะนี้ฉันกำลังใช้ POM ผู้ปกครองจากฤดูใบไม้ผลิดังนี้: <parent> …

9
โน้มน้าวให้ผู้พัฒนาโดดเดี่ยวเพื่อใช้เครื่องมือบิลด์แยกต่างหากแทนที่จะเป็นบิลด์ IDE แบบคลิกเดียว
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา ในช่วงเวลาหลายปีของการเขียนโปรแกรม Java และ Scala เมื่อเร็ว ๆ นี้ฉันไม่เคยใช้ Ant, Maven, Gradle หรือเครื่องมือสร้างเหล่านี้สำหรับ Java ทุกที่ที่ฉันทำงานมีผู้จัดการสร้างที่ดูแลทุกอย่าง - ฉันรวบรวมภายในเครื่องด้วย IDE สำหรับการพัฒนาและทดสอบหน่วยจากนั้นตรวจสอบในซอร์สโค้ดและแจ้งผู้จัดการสร้างที่ทำสิ่งที่จำเป็น รวบรวมไฟล์ของทุกคนสำหรับสภาพแวดล้อมที่ใช้ร่วมกัน ตอนนี้ฉันอยู่ระหว่างสัญญาฉันได้ทำงานในโครงการที่ได้รับทุนของตัวเองแล้วและถึงจุดที่มันจะดีพอที่จะทำเงินได้จริง ฉันยังมีนักลงทุนที่คาดหวังและวางแผนที่จะแสดงให้พวกเขาเห็นเป็นรุ่นเบต้าในไม่กี่สัปดาห์ แต่ตลอดฉันคลิกปุ่มสร้างบน IDE และสร้างไฟล์ Jar และใช้งานได้ดี แน่นอนว่าภูมิปัญญาดั้งเดิมแสดงให้เห็นว่าฉัน "ควร" เขียนสคริปต์ Ant / Maven / Gradle ของตัวเองและใช้สิ่งนั้นแทน IDE แต่อะไรคือข้อดีที่เป็นรูปธรรมในสถานการณ์ของฉัน (ทำงานคนเดียว)? ฉันได้อ่านเกี่ยวกับวิธีการใช้เครื่องมือสร้างเหล่านั้นและดูเหมือนว่าฉันจะเขียน XML …

1
Haskell สร้างและสร้างสภาพแวดล้อมที่คล้ายคลึงกับ Maven
ฉันเคยเป็นนักพัฒนา Java มานาน แต่เมื่อเร็ว ๆ นี้ฉันเข้าร่วมทีม Haskell ในโลกของจาวาถ้าคุณมีโครงการขนาดใหญ่โดยมีหลายทีมที่ทำงานอยู่วิธีการทั่วไปคือการใช้เซิร์ฟเวอร์สิ่งประดิษฐ์เช่น Maven เพื่อความสะดวกและรวดเร็วในการพัฒนา เครื่องมือสร้างจำนวนมากเช่น Ant, Maven, Gradle สามารถสร้างโครงการและอัปโหลดไฟล์ jar ไปยังเซิร์ฟเวอร์สิ่งประดิษฐ์ที่สามารถใช้งานโดยส่วนที่เหลือของทีมโดยไม่มีความเจ็บปวด ดังนั้นโดยการแยกโครงการออกเป็นโครงการย่อยขนาดเล็กเวลาสร้างจะลดลงอย่างมาก ในด้านของ Haskell เราใช้cabalเพื่อสร้างโครงการ โครงการของเราใช้เวลาในการสร้างประมาณ 10-15 นาทีโดยไม่มีการเพิ่มประสิทธิภาพ ใช้เวลาสองสามชั่วโมงหากเปิดการปรับแต่งคอมไพเลอร์ซึ่งเป็นเรื่องเจ็บปวด ฉันสงสัยว่าเราจะทำสิ่งเดียวกันกับที่เราทำใน Java ที่นี่ได้อย่างไร มีวิธีง่าย ๆ ในการรวบรวมและอัปโหลดไบนารีของแพ็คเกจ (ไลบรารี) ไปยังเซิร์ฟเวอร์สิ่งประดิษฐ์และใช้ไบนารีที่สร้างไว้ล่วงหน้าในเวลาบิลด์หรือไม่ ฉันรู้ว่าเนื่องจาก Haskell สร้างรหัสเครื่อง (แทนที่จะเป็นรหัสไบต์ใน Java) อาจมีปัญหาความเข้ากันได้ แต่เราอาจมีไบนารีต่างกันสำหรับสถาปัตยกรรม / ระบบปฏิบัติการต่าง ๆ ที่เก็บไว้ในเซิร์ฟเวอร์ส่วน

1
จะรวมใบอนุญาตสำหรับการพึ่งพา Maven ของบุคคลที่สามได้อย่างไร
ฉันผลิตไบนารีที่แจกจ่ายได้สำหรับโครงการ Java ของฉัน ฉันปล่อยสองวิธี: Maven Central ซิปกระจายได้ในรหัส Google โครงการของฉันได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 ฉันใช้บุคคลที่สามจำนวนน้อยซึ่งหนึ่งในนั้นเป็นลิขสิทธิ์ของ MIT ฉันเชื่อว่ามันเป็นหน้าที่ของฉันที่จะทำให้ผู้ใช้ของโครงการของฉันตระหนักถึงเนื้อหาของใบอนุญาตตามข้อความต่อไปนี้จากใบอนุญาต: ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือบางส่วนที่สำคัญของซอฟต์แวร์ ฉันจะอ้างอิงสิ่งนี้ได้ดีที่สุดภายในแหล่งที่มาของฉันและของฉันแจกจ่ายได้อย่างไร ฉันกำลังคิด: ไฟล์ต้นฉบับของฉันไม่จำเป็นต้องอ้างอิงอะไรเลย พวกเขาเพียงแค่แจ้งให้ทราบล่วงหน้า Apache 2.0 ของฉัน ฉันเพิ่มไฟล์ LICENSE.txt ที่รากของโครงการของฉันรวมถึงข้อความลิขสิทธิ์ Apache 2.0 สำหรับซิปที่แจกจ่ายได้ของฉันฉันต้องเพิ่มบางอย่างที่บ่งชี้ว่าส่วนประกอบได้รับอนุญาตจาก MIT อาจเป็นไฟล์ประกาศ? สำหรับการกระจาย Maven Central ของฉันฉันไม่จำเป็นต้องทำอะไรเลยเพราะสิ่งประดิษฐ์ของฉันเพิ่งประกาศการพึ่งพา แต่ก็ไม่ได้รวมสิ่งเหล่านั้น ดูเหมือนว่าแผนที่ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้นทุกคนสามารถแนะนำวิธีการบรรลุจุดที่ 3

2
วิธีที่ดีที่สุดในการจัดโครงสร้างที่เก็บ Git สำหรับ Maven
ฉันต้องการคำแนะนำเกี่ยวกับวิธีการจัดโครงสร้างโครงการของเราใน Git เราใช้ Java และ Maven เป็นเครื่องมือสร้างของเรา Maven kinda ถือว่าโครงการทั้งหมดของคุณมีบรรพบุรุษร่วมกันในที่สุด Maven ยังสามารถเป็นราชินีละครจริงเมื่อสิ่งที่ไม่ติดตั้งตรงทาง Apache ชุดมูลนิธิโครงการของพวกเขา (ทุกคนที่ใช้ปล่อยปลั๊กอินอาจจะรู้ว่าสิ่งที่ผมพูดถึง) เราต้องการ pom พาเรนต์ระดับบนสุดที่ควบคุมเวอร์ชันของปลั๊กอินและสร้างการกำหนดค่า (การกำหนดค่า repo สิ่งที่จะสร้างการตั้งชื่ออนุสัญญารุ่นของปลั๊กอิน ฯลฯ ) Maven ต้องการให้โครงการไอทีทั้งหมดของเราอยู่ในโฟลเดอร์ย่อยของโครงการหลักนั้น นี่หมายถึง repo Git ขนาดใหญ่หนึ่งรายการสำหรับองค์กร สิ่งนี้จะทำให้สภาพแวดล้อมที่มีเสียงดังมาก หากมีสองทีมที่ทำงานในโครงการที่ไม่เกี่ยวข้องพวกเขาจะต้องดึงการรวมตัวของทีมอื่นอย่างต่อเนื่อง ฉันอยากได้ repo หนึ่งต่อโครงการ แต่การปะทะแบบนั้นกับโมเดลลำดับขั้นสุดยอดของ Maven ซึ่งต้องการโครงการย่อยเป็นโฟลเดอร์ย่อย ฉันต้องการคำแนะนำเกี่ยวกับวิธีที่ผู้คนคืนดีแบบจำลองทั้งสองนี้ ... ขอบคุณ!

1
โครงสร้างแอ็พพลิเคชัน Java: แนวนอน vs แนวแยก
มีการถกเถียงกันเล็กน้อยเกี่ยวกับโครงสร้างโครงการเริ่มต้น (โดยใช้ Maven / Eclipse) สำหรับแอปพลิเคชัน Java ขนาดใหญ่ ตัวเลือกที่ 1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) ตัวเลือก 2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are …

5
Ant ยังอยู่ใน“ กระแสหลัก” สำหรับ Java หรือไม่?
เราได้เปลี่ยนไฟล์คำสั่งแบทช์อย่างช้า ๆ (windows .bat) ซึ่งเป็นคลาสที่รวบรวมใน IDE สำหรับนักพัฒนาพร้อมกับ Ant builds ที่ครอบคลุมมากขึ้น (เช่นได้รับจาก CVS, คอมไพล์สะอาด, เก็บถาวร, อีเมล, ฯลฯ ) ฉันใช้เวลาเรียนรู้มากมาย (และแก้จุดบกพร่องปัญหา) กับ Ant ดังนั้นฉันจึงสบายใจที่จะใช้มันสำหรับงานเหล่านี้ แต่ฉันสงสัยว่ามดยังคงใช้งานได้อย่างกว้างขวางเหมือนเดิมเมื่อฉันเริ่มเรียนรู้หรือไม่ว่า "โลกได้ก้าวต่อไป" กับสิ่งใหม่กว่า (และอาจสั่นไหว) (ฉันเริ่มเห็น Maven build สิ่งของกระจายมากขึ้นซึ่งฉันไม่เคยใช้มาก่อน) การนำเข้าคำถามนี้จริง ๆ แล้วฉันจะผลักนักพัฒนาใหม่เพื่อเรียนรู้ Antหรือไม่หรือพวกเขาควรจะเรียนรู้สิ่งอื่นเพื่อการสร้างหรือไม่ ฉันไม่เคยอยู่บนแนวโน้มเช่นกันดังนั้นจึงเป็นเรื่องดีที่จะได้ยินจากนักพัฒนา Java คนอื่น ๆ สิ่งที่พวกเขาคิดว่าเป็นเครื่องมือสร้างที่ดีที่สุดและสิ่งที่พวกเขาคิดว่านักพัฒนาใหม่ควรเรียนรู้
14 java  training  maven  builds  ant 

2
ห้องสมุดซอฟต์แวร์ขนาดเล็กของฉันควรหลีกเลี่ยงการใช้ห้องสมุดอื่นหรือไม่?
ฉันเพิ่งเปิดตัว Java Library ขนาดเล็กที่มีคลาสและเมธอดไม่กี่ตัว ตั้งแต่ฉันสร้างโครงการด้วย Maven ฉันจึงใช้ห้องสมุดบุคคลที่สามหลายแห่งเพื่อบรรลุเป้าหมายโดยเฉพาะ: commons-lang3 (สำหรับบางสิ่ง Java ทั่วไป) slf4j-api (สำหรับการบันทึก) คอมมอนส์ - io (สำหรับไฟล์เล็ก ๆ น้อย ๆ - ฉันอ่านไฟล์หนึ่งครั้ง) ฉันไม่ต้องการให้ห้องสมุดของฉันปรากฏในสายตาของคนอื่น ฉันควรพยายามลบการพึ่งพาห้องสมุดเหล่านี้เพื่อลดปริมาณการปล่อยหรือไม่ คำแนะนำเกี่ยวกับห้องสมุดประเภทใดควรหลีกเลี่ยงเมื่อพิจารณาการใช้เพิ่มเติมในอนาคต
13 java  libraries  maven 

5
การสร้างโปรเจ็กต์ Java EE ด้วย Maven
ฉันพัฒนา Java EE เว็บแอปกับ Eclipse มาประมาณปี นายจ้างของฉันไม่ได้ใช้ Maven แต่ยิ่งฉันอ่านมากเท่าไหร่ฉันก็ยิ่งเชื่อว่า Maven + Hudson จะเป็นประโยชน์อย่างมากสำหรับเรา ก่อนอื่นฉันต้องรู้สึกสะดวกสบายกับเทคโนโลยีเหล่านั้นในเวลาว่างของฉันเพื่อที่ฉันจะสามารถสร้างแนวคิดที่พิสูจน์ได้ ตอนนี้ฉันยังเป็นมือใหม่ Maven มีชุดแนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้าง Java EE เว็บแอพด้วย Maven หรือไม่? ตัวอย่างเช่นฉันสามารถสร้างโครงการด้วย archetype พื้นฐานแล้วเพิ่ม JARs ที่จำเป็นทั้งหมดโดยใส่การอ้างอิงใน POM สำหรับ servlet container, EJB, EclipseLink, ฯลฯ ... ที่อาจใช้งานได้ แต่อาจไม่ดีที่สุด วิธีที่จะทำมัน ฉันขอขอบคุณคำแนะนำใด ๆ ที่คุณสามารถให้ในหัวข้อนี้
13 java-ee  maven 

2
การแยกโปรเจ็กต์ java
ฉันมีโปรเจ็กต์ java ขนาดใหญ่และเราใช้ maven สำหรับวงรอบการสร้างของเรา โครงการนี้มีการใช้อย่างกว้างขวาง - ในโครงการอื่น ๆ ในแอปพลิเคชั่นต่าง ๆ ซึ่งบางส่วนอยู่ในนั้นและบางส่วนอยู่ที่อื่น ... พูดตามตรงแล้วมันเป็นระเบียบนิดหน่อย วัตถุประสงค์) และฉันต้องการทำความสะอาดสักหน่อย นอกจากนี้ยังไม่ผ่านการทดสอบอย่างสมบูรณ์ (มีการเพิ่มบิตจำนวนมากโดยไม่มีหน่วยที่เหมาะสมและการทดสอบการรวม) และมีการทดสอบบางอย่างที่ใช้เวลานานในการรันหรือไม่ผ่านจริง ... (uh-oh) - ดังนั้น การทดสอบจะถูกปิดในวงจรสร้าง maven (อีกครั้ง uh-oh) ฉันกำลังคิดที่จะแยกโครงการขนาดใหญ่นี้ออกเป็นโครงการขนาดเล็กโดยเฉพาะเช่นโครงการย่อย 'สุดท้าย' (หรือโครงการย่อยหลายโครงการ) จะรับโครงการย่อยต่าง ๆ ที่มันต้องการ ความคิดของฉันเป็นดังนี้: ถ้าฉันแยกโครงการใหญ่ออกเป็นโครงการย่อยต่าง ๆ นี่จะทำให้ชัดเจนว่าความรับผิดชอบของแต่ละโครงการคืออะไร โดยแยกเป็นโครงการย่อยฉันสามารถล้างการทดสอบของแต่ละโครงการย่อยทีละรายการและเปิดการทดสอบสำหรับโครงการย่อยนั้นในวงจรการสร้าง maven ฉันกังวลเล็กน้อยเกี่ยวกับผลกระทบที่อาจเกิดขึ้นกับเวลาสร้าง การวางโครงสร้างในโครงการขนาดใหญ่ (เช่นเป็นโครงการย่อยขนาดเล็ก) จะทำให้คอมไพเลอร์ช้าลงหรือไม่ นอกจากนี้ฉันมีข้อกังวลเล็กน้อยเกี่ยวกับผลกระทบที่อาจเกิดขึ้นกับการแก้ไขเวลาใน IDEs (เราใช้ Intellij เป็นหลัก) Intellij ดูเหมือนว่าจะสร้างแต่ละโครงการผ่านแผนผังการพึ่งพา …

2
git, maven และ jenkins - versioning, dev และ release สร้างเวิร์กโฟลว์
เป็นวิธีที่ต้องการทำต่อไปนี้ด้วยคอมไพล์ maven และเจนกินส์คืออะไร: ฉันกำลังพัฒนาแอปพลิเคชันซึ่งฉันต้องการรักษาสาขา "dev" และ "release" ฉันต้องการเจนกินส์เพื่อสร้างทั้งสอง อาจเป็นไปได้ว่าการเผยแพร่สิ่งประดิษฐ์จะมีรุ่นเช่น 1.5.2 และ dev-builds จะเป็น 0.0.1-SNAPSHOTs ฉันไม่ต้องการไฟล์ pom.xml 2 ไฟล์ ฉันดูโปรไฟล์ แต่ดูเหมือนว่าพวกเขาจะไม่สามารถเปลี่ยนเวอร์ชันสิ่งประดิษฐ์ได้ วิธีหนึ่งที่ฉันสามารถดูได้คือการเพิ่ม 'ตัวระบุ' ลงในการทดสอบสร้าง แน่นอนฉันสามารถเปลี่ยนชื่อไฟล์ได้เนื่องจากข้อมูลสิ่งประดิษฐ์จริงในเรื่องนี้ไม่สำคัญเพราะแอปเป็นแบบสแตนด์อโลน สิ่งที่จะเป็นวิธีที่ต้องการในการทำเช่นนี้? หรือคุณจะทำอย่างไร

1
IntelliJ พร้อมการรวบรวม Maven
ฉันมีโครงการที่ต้องการขวดไฮเบอร์เนต ฉันเพิ่มพวกเขาเป็นการพึ่งพาใน pom.xml และ Maven รวบรวมโครงการของฉันได้ดี อย่างไรก็ตามใน IDE นั้นคำอธิบายประกอบและการโทรถึง Hibernate API ทั้งหมดจะถูกทำเครื่องหมายว่าไม่ได้รับการแก้ไข (สีแดง) ฉันจะทำให้ IntelliJ สามารถแก้ไขได้อย่างไร มีวิธีการใช้ Maven เมื่อฉันคลิกที่สร้างโครงการหรือไม่ (Ctrl + F9) นอกจากนี้ฉันสับสนกับแนวคิดของ facets ภายใน IntelliJ ฉันต้องการมันหรือเปล่าสมมุติว่า JPA facets เปิดใช้งาน Persistence Assistant ฯลฯ ... หรือมีตัวเลือกให้ Maven ดูแล?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.