IntelliJ: การทำงานกับหลายโครงการ


332

เราสร้างในโครงการหลายโครงการ (ลองตั้งชื่อพวกเขาว่า A, B, C) โครงการ A ใช้. jar ของโครงการ B ซึ่งใช้. jar ของโครงการ C

ฉันกำลังแก้ไขรหัสของโครงการ A / B / C ทั้งหมด (A คือแอป MVC, B คือบริการทางธุรกิจและ C คือเลเยอร์ที่ใช้ร่วมกัน)

สิ่งนี้คือใน Eclipse / NetBeans ฉันสามารถเห็นพวกมันทั้งหมดในครั้งเดียวและมันก็สบายใจที่จะแก้ไขมัน ใน IDEA ฉันต้องเปิด 3 อินสแตนซ์ (หรือnอินสแตนซ์) ของ IntelliJ IDEA

ฉันพลาดอะไรไปรึเปล่า? มีวิธีที่ดีกว่าเมื่อใช้ IntelliJ หรือไม่ นี่เป็นข้อเสียที่ใหญ่ที่สุดของ IntelliJ สำหรับฉัน ATM


3
มองผ่านคำตอบของวันที่สรุปสาระสำคัญพื้นฐานที่ฉันเห็นคือ IntelliJ กำหนดสิ่งที่ Eclipse เรียกว่า "โครงการ" เป็นโมดูลและ "พื้นที่ทำงาน" เป็นโครงการ แนวคิดคือเพื่อให้แน่ใจว่าโมดูลในโครงการเดียวกันนั้นมีความเกี่ยวข้องอย่างเป็นธรรม ดังนั้นหากโครงการ A ขึ้นอยู่กับโครงการ B แต่ทั้งคู่ไม่มีความเกี่ยวข้องกับโครงการ C จะเป็นการดีที่จะเปิดโครงการ A และ B เป็นโมดูลในโครงการ IntelliJ เดียวกันในขณะที่เปิด C ในโครงการแยกในอินสแตนซ์ IntelliJ ที่สอง คุณสามารถเห็นด้วยหรือไม่เห็นด้วยกับการออกแบบ แต่ (สมมติว่าฉันได้รับความคิดที่ถูกต้อง) ฉันให้เกียรติความคิดที่อยู่เบื้องหลัง
John Chesshir

คำตอบ:


134

ใช่สัญชาตญาณของคุณดี คุณไม่ควรใช้ Intellij สามอินสแตนซ์ คุณสามารถเปิดโครงการหนึ่งและเพิ่ม 'ส่วน' อื่น ๆ ของแอปพลิเคชันเป็นโมดูล เพิ่มผ่านเบราว์เซอร์โครงการฮอตคีย์เริ่มต้นคือ alt + 1


1
ฉันทำเช่นเดียวกัน: นำเข้าโครงการหลักจากนั้นฉันนำเข้าโครงการที่สองของฉันโดยใช้ 'โมดูลนำเข้า' แต่หลังจากนั้น - ฉันได้รับ "โมดูลเหล่านี้ถูกลบออกจากโครงสร้าง Maven: ... คุณต้องการให้ลบออกหรือไม่ จากโครงการด้วยเหรอ? " - จากนั้นฉันกด 'ไม่' แต่กล่องโต้ตอบนี้ปรากฏขึ้นหลายครั้ง ฉันจะทำอย่างไร
nnhthuan

99
คำตอบที่ดีกว่าด้านล่าง
redDevil

3
@redDevil อันไหน
Piotr Findeisen

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

2
นี่จะดีกว่าคำตอบ "Maven เท่านั้น" แต่ก็ไม่ได้ช่วยถ้าคุณมีโครงการที่ไม่เกี่ยวข้องที่คุณต้องการให้มองเห็นได้พร้อมกัน (เช่นการเข้าถึงที่ง่ายต่อการอ้างถึงรหัสของโครงการอื่น) หรือถ้าคุณสนับสนุนห้องสมุดที่ขึ้นอยู่กับ โครงการที่คุณมุ่งเน้น น่าผิดหวังอย่างยิ่งที่ IJ ไม่ได้ใช้รุ่น Eclipse / NetBeans ที่นี่เป็นสิ่งสำคัญที่ทำให้ฉันเปลี่ยนมาใช้ IJ ไม่ได้
Manius

422

ฉันคิดว่าสิ่งนี้ได้รับการปรับปรุงด้วย IntelliJ รุ่นล่าสุด ในเวอร์ชันปัจจุบันของฉัน (12.0.2) คุณสามารถเพิ่ม Maven project ที่แยกต่างหากจำนวนเท่าใดก็ได้ใน "workspace" เดียวกัน

วิธีที่ง่ายที่สุดที่ฉันพบคือการคลิกที่+ไอคอนเล็ก ๆในหน้าต่าง "Maven Projects" (ดู> เครื่องมือ Windows> Maven Projects) จากนั้นเลือกไฟล์ pom เพิ่มเติมที่คุณต้องการนำเข้า


2
เพียงเพิ่ม: เมื่อเพิ่ม Maven Project แล้วมันจะโหลดในแผงโครงการหากเป็นโครงการในท้องถิ่น
Aram Kocharyan

9
หากโครงการเหล่านี้อยู่ในที่เก็บ git ที่แตกต่างกันคุณสามารถตรวจสอบ 'ที่เก็บการควบคุมพร้อมกัน' ในการตั้งค่า (การตั้งค่า> การควบคุมเวอร์ชัน> Git) IntelliJ จะผลักดันอัปเดตและเลือกสาขาที่ซิงค์กับโครงการหลาย ๆ โครงการ
Tim Van Laer

13
สำหรับผู้ที่ยังใหม่ต่อ IntelliJ และไม่ทราบว่าหน้าต่าง "Maven Projects" คือ: มุมบนขวา
dustin.schultz

1
ด้วยรุ่น 2017 มันแตกต่างให้อ้างอิงกับjetbrains.com/help/idea/2017.1/maven-projects-tool-window.html
vikramvi

3
ดังนั้นหากคุณต้องการเปิดหลายโครงการ แต่โครงการ Gradle หรือ Ant คุณยังโชคไม่ดี ไม่เป็นไร ... ฉันต้องเปิดทั้ง 3 อย่างเช่น NetBeans และ Eclipse การขาดพื้นที่ทำงานที่เหมาะสมคือเหตุผล # 1 ที่ฉันยังไม่ได้ใช้ IJ
Manius

216

โปรดทำตาม 2 ขั้นตอนเหล่านี้:

ขั้นตอนที่ 1 : เปิด "โครงการ Maven"

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

ขั้นตอนที่ 2 : เลือกโครงการที่คุณต้องการนำเข้า:

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


20
ภาพที่มีค่าพันคำ.
Neeraj Jain

3
ขอบคุณนี่เป็นประโยชน์จริง ๆ
J. Adam

3
คำตอบนี้ช่วยฉันได้มากโดยเฉพาะอย่างยิ่งสำหรับการใช้หน้าจอ ขอบคุณ.
Chaklader Asfak Arefe

1
นี่คือคำตอบที่ฉันกำลังมองหา ขอบคุณมาก :)
35460 Jerin Kurian

1
ฉันไม่เห็นตัวเลือกในอินสแตนซ์ของฉัน:2019.3 community
Marinos An

134

Prequisite

มีโครงการที่เกี่ยวข้องทั้งหมดในไดเรกทอรีรากเดียวกัน

ขั้นตอน

1) ขั้นแรกคุณสร้างโครงการเปล่าใหม่

โครงการใหม่ที่ว่างเปล่า


2) จากนั้นคุณเลือกไดเรกทอรีรากของโครงการทั้งหมดของคุณ

สิ่งนี้จะสร้างโครงการที่ว่างเปล่าโดยมีไดเรกทอรี. aaa ที่จะจำโครงสร้างองค์กรที่เรากำลังจะทำในขั้นตอนต่อไป

เลือกไดเรกทอรีราก


3) จากนั้นในหน้าต่างถัดไปคุณนำเข้าโครงการต่าง ๆ เป็นโมดูล

นำเข้าโครงการเป็นโมดูล


4) ในหน้าต่างถัดไปเมื่อต้องการนำเข้าแต่ละโครงการเพียงดับเบิลคลิกที่build.gradleหรือpom.xml

โครงการจะถูกนำเข้าเป็นโมดูลใหม่ เลือกไฟล์บิลด์


5) เสร็จแล้วตอนนี้คุณมีโครงการทั้งหมดของคุณเป็นโมดูลเปิดในโครงการ IntelliJ เดียวกัน

ผลลัพธ์


16
นี่คือคำตอบที่ถูกต้องสำหรับคำถามนี้ ก่อนสร้างและล้างโครงการแล้วเพิ่มโครงการที่มีอยู่ ขอบคุณ
hrzafer

4
คุณมีทางออก แต่ 'ข้อกำหนดเบื้องต้นของคุณมีโครงการที่เกี่ยวข้องทั้งหมดในไดเรกทอรีรากเดียวกัน' ไม่จำเป็นต้องใช้. ฉันลองโครงการ maven และใช้งานได้กับ Intelllij เวอร์ชั่น 2017.3 ฉันไม่ได้ลองกับโมดูลมาตรฐานของ Intellij
Gauthier Peel

2
ทางออกที่แน่นอน!
Satheesh

2
คำตอบยอดนิยม ขอบคุณ :)
AnarchoEnte

2
ทำงานให้ฉันด้วย Intellij Idea 2018.3 และ Gradle
incises

53

ใน IntelliJ 14.1.2 ฉันทำเช่นนี้:

เลือกFile-> ->Project StructureModules

เลือก+และImport Moduleเลือกไดเรกทอรีของโครงการของคุณ (หรือไดเรกทอรีที่มีอยู่ pom) และคลิกตกลง

ติดตามการไหลของหน้าจอถัดไปและหลังจากที่คุณคลิกFinishคุณควรเห็นโครงการที่อยู่ข้างๆโครงการที่มีอยู่

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


ไม่สามารถเพิ่มโมดูลเช่นนี้ Cannot import anything from C:/Projects/
เคย

@everalian คุณมี pom.xml ใน C: / โครงการหรือที่อื่น ๆ หรือไม่?
นีโอ

ไม่ฉันไม่มีไฟล์ pom.xml เพราะฉันใช้Gradleบิลด์
30714 alian เคย

2
นี่ควรเป็นทางออกที่ยอมรับได้ ไม่ทุกโครงการใช้ maven
Babken Vardanyan

34

ไม่มีวิธีแก้ปัญหาใดที่เหมาะกับฉันเนื่องจากฉันไม่ได้ทำงานในโครงการ Maven มีทางออกที่ง่ายกว่า ไปที่:

ไฟล์ -> โครงสร้างโครงการ -> โมดูล

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

แทนที่จะเพิ่มโมดูลเพียงคลิกตัวเลือกที่สาม (คัดลอก) เรียกดูไดเรกทอรีในพื้นที่ของคุณและเลือกโครงการที่คุณต้องการเพิ่ม ชื่อโมดูลจะแก้ไขโดยอัตโนมัติ แค่นั้นแหละ.

อัปเดต: เมื่อคุณต้องการเปิดโครงการอีกครั้งด้วยโครงการย่อยหลายโครงการเพื่อหลีกเลี่ยงขั้นตอนการทำซ้ำตามที่อธิบายไว้ข้างต้นเพียงไปที่ ไฟล์ -> เปิดล่าสุด -> 'โครงการใหญ่ของคุณ'


1
ใช่ ... โอ้ใช่ .... นี่คือทางออกที่ฉันกำลังมองหา การอิมพอร์ตเป็นโมดูล maven หรือโปรเจ็กต์จะไม่สร้าง.ideaและxxx.imlไฟล์ นี้อาจทำให้เกิดปัญหากับกระเบื้อง Apache 2018.1.5ฉันใช้กับรุ่น ขอบคุณมาก ๆ.
Cataclysm

มันอัศจรรย์มาก! ข้อเสียเพียงอย่างเดียวคือใช้ IDE เป็นตัวแก้ไขเท่านั้นและยังคงต้องไปยังโฟลเดอร์ที่ถูกต้องเพื่อรวบรวมและเรียกใช้ ทุกคนมีวิธีที่ง่ายในการใช้โซลูชันนี้สำหรับหลาย ๆ โฟลเดอร์ (โมดูลที่คัดลอก) และยังคงรวบรวมและทำงานในการแก้ไขหรือไม่
Greg Hilston

11

หากต้องการขยาย @Neo answer: หลังจากเลือกไดเรกทอรีของคุณ เลือกimport module from external modelและเลือกรุ่นของคุณ (maven ในกรณีนี้)

เลือกรุ่น

จากนั้นตรวจสอบkeep project filesตัวเลือกจากกล่องโต้ตอบถัดไป มันจะเก็บไฟล์ทั้งหมดในไดเรกทอรีเดิม

ตัวเลือก

โครงสร้างโครงการสุดท้ายของคุณจะเป็นแบบนี้

โครงสร้าง

ตอนนี้คุณสามารถเพิ่มโมดูลของคุณเป็นการพึ่งพาโมดูลอื่นpom.xmlและถ้าคุณเปลี่ยนซอร์สโค้ดของการพึ่งพาของคุณ Intellij ดูแลการปรับปรุงโครงการของคุณ (ไม่จำเป็นต้องเรียกใช้งานmvnสร้างด้วยตนเองสำหรับการอ้างอิง)


8
  • โครงการใหม่ที่ว่างเปล่า
  • ไฟล์ -> ใหม่ -> โมดูลจากแหล่งที่มีอยู่

6

คุณสามารถใช้Armory pluginซึ่งทำให้การสลับระหว่างโครงการนั้นสะดวก ทางลัดเริ่มต้นสำหรับรายการโครงการเป็นAlt + A

สกรีนช็อตของหน้าต่างรายการโครงการ

โดยค่าเริ่มต้นโครงการที่เปิดอยู่ในปัจจุบันจะปรากฏที่ด้านบนของรายการนี้ (มีสไตล์เป็นตัวหนา )


6

เปิดการตั้งค่า -> ลักษณะและพฤติกรรม -> การตั้งค่าระบบ -> เลือก (เปิดโครงการในหน้าต่างใหม่) จากนั้นใช้ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นคุณสามารถเปิดและแก้ไขหลายโครงการได้


5
นี่คือสิ่งที่ OP พยายามหลีกเลี่ยง เขาต้องการให้พวกเขาอยู่ในหน้าต่างเดียวกันทั้งสามโครงการพร้อมกัน
Simon Forsberg

6

สำหรับผู้ที่ใช้ Gradle ยังสามารถใช้ประโยชน์ได้เหมือนกัน:

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

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

ไปที่: 1. ดู -> เครื่องมือ Windows -> Gradle 2. คลิกที่+ปุ่มและเพิ่มbuild.gradleไฟล์ของคุณ


คุณใช้ Community Edition หรือ Ultimate Edition หรือไม่ ฉันใหม่สำหรับ Intellij และเพิ่งได้รับ CE (2019.3.3) นี่ไม่มี Gradle ในเมนูนั้น
ไมค์หนู

4

กด "F4" บนหน้าต่างซึ่งจะเปิด "โครงสร้างโครงการ" แล้วคลิกไอคอน "+" หรือ "Alt + Insert" เพื่อเลือกโครงการใหม่ที่จะนำเข้า; จากนั้นคลิกปุ่มตกลง ...


ขอบคุณสำหรับกุญแจ มันจะมีประโยชน์ถ้าคุณลืมที่จะเพิ่มอะไรด้วยคำตอบของ @ThisIsFlorianK!
Satheesh

4

ใช้ปุ่มสำหรับโครงการเพิ่ม maven และเข้าไปในโฟลเดอร์ของโครงการ จากนั้นเลือกpom.xmlไฟล์และเพิ่มใน IntelliJ

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


1

สำหรับผู้ที่ไม่ได้ใช้ Maven เพื่อสร้างและต้องการเพิ่มโครงการใหม่ (ฉันใช้ Intellij 14.1.3):

  1. คลิกขวาที่โฟลเดอร์ระดับบนสุดในมุมมองโครงการเลือกใหม่ -> โมดูล
  2. ตั้งชื่อโมดูลชื่อเดียวกันกับโครงการที่จะเพิ่ม
  3. จากเมนูด้านบนเลือกไฟล์ -> สร้างใหม่ -> โครงการ ป้อนชื่อเดียวกันกับโมดูลใหม่ที่ตั้งโฟลเดอร์เดียวกัน
  4. เปิดโครงการและรอการ Intellij เพื่อสร้างโครงสร้างโครงการ
  5. ปิดโครงการใหม่นี้แล้วเปิดโครงการเดิมที่เพิ่มโมดูลไว้ในขั้นตอนที่ 2

ขึ้นอยู่กับผู้สร้างของคุณจะต้องมีขั้นตอนเพิ่มเติมเพื่อเพิ่มลงในกระบวนการสร้าง

สำหรับ SBT และในโครงการระดับบนสุดฉันแก้ไขไฟล์ Build.scala เพื่อรวมโครงการใหม่และเพิ่มโครงการในหน้าต่างโครงการ SBT ข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง Multroject ของ SBT: http://www.scala-sbt.org/0.12.2/docs/Getting-Started/Multi-Project.html


IntelliJ เพิ่มการสนับสนุนสำหรับการเพิ่มโมดูล sbt ให้กับโปรเจ็กต์และมันทำงานได้ดีจริงๆ แต่ดูเหมือนว่าจะแตกตั้งแต่ปี 2017 คุณยังสามารถเพิ่มโมดูล sbt ได้หลายโมดูล แต่เมื่อคุณรีเฟรชคุณจะสูญเสียทั้งหมดยกเว้นโมดูลเดียว
Nader Ghanbari

1

ใน Intellij IDEA 2019.2, F4 + คลิกที่โมดูลคลิกเพื่อ + เพื่อเพิ่มโครงการใด ๆ จาก HDD ของคุณเหนือเมนูนี้คุณสามารถแก้ไข IDE ด้วยคุณสร้างโครงการและตัวเลือกอื่น ๆ ง่ายมาก


0

คุณสามารถใช้ตัวเลือกโมดูลนำเข้าซึ่งจะเปิดได้เช่นเดียวกับ eclipse ในเนวิเกเตอร์เดียวกัน


มันบอกว่าไม่สามารถเปิด. ipr ให้กับโครงการได้
ปกติแล้วจะเป็น

0

ฉันใหม่เพื่อ maven และไม่เข้าใจว่าฉันจะทำงานกับโครงการ maven ท้องถิ่นที่เพิ่มเข้ามาได้อย่างไรผ่านคำตอบของ Viktor Nordlingและยังมีการพึ่งพาที่เหมาะสมในไฟล์ pom.xml คำตอบนั้นง่าย: Intellij แรกดูที่โมดูลเพิ่มในพื้นที่ของคุณและถ้าไม่พบมันก็จะได้รับโครงการจากระยะไกล คุณสามารถตรวจสอบสิ่งนี้ได้โดยดูที่ "ไลบรารีภายนอก" ภายใต้เบราว์เซอร์โครงการของคุณเมื่อคุณเพิ่มหรือลบโมดูล maven

หวังว่านี่จะช่วยทุกคน


0

นับตั้งแต่เปิดตัวในปี 2019.2 สิ่งนี้ง่ายเหมือนไฟล์ -> แนบโครงการ

🎉🎉🎉🎉🎉

ไฟล์ -> แนบโครงการ

ดู: https://youtrack.jetbrains.com/issue/WEB-7968


คุณใช้ Community Edition หรือ Ultimate Edition หรือไม่ ฉันใหม่สำหรับ Intellij และเพิ่งได้รับ CE (2019.3.3) สิ่งนี้ไม่มีโครงการแนบในเมนูนั้น
ไมค์หนู

-1

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

วิธีเปิดหลายโครงการในหน้าต่างเดียวกัน:

ไฟล์ -> เปิดโครงการ

เลือกเปิดในหน้าต่างนี้

กล่องกาเครื่องหมายที่แจ้งว่าเพิ่มลงในโครงการปัจจุบัน


1
ไม่ทำงาน. มันแทนที่โครงการที่เปิดอยู่ในปัจจุบันเป็นหน้าต่างเดียวกัน
อนันต์

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