IntelliJ - แปลงโครงการ / โมดูล Java เป็นโครงการ / โมดูล Maven


398

ฉันมีโครงการใน Bitbucket เฉพาะแหล่งที่มาเท่านั้น ในการดึงโปรเจ็กต์ไปยังเครื่องใหม่ฉันใช้การควบคุมเวอร์ชัน> ชำระเงินจากการควบคุมเวอร์ชันจากภายใน IntelliJ

จากนั้นจะถามว่าฉันต้องการสร้างโครงการใหม่จากแหล่งนี้หรือไม่ซึ่งฉันตอบว่าใช่ จนถึงตอนนี้ดีมาก มันสร้างโปรเจ็กต์เล็ก ๆ ที่ดีสำหรับฉันซึ่งประกอบด้วยโมดูลเดียว

อย่างไรก็ตามเป้าหมายของฉันในการดึงโครงการนี้เข้าสู่ IntelliJ คือเปลี่ยนเป็นโครงการ Maven ฉันไม่พบตัวเลือกใด ๆ ที่จะให้ฉันทำเช่นนี้!

มีวิธีที่จะทำให้ IntelliJ เพิ่งสร้าง pom.xml ว่างเปล่าขั้นพื้นฐานสำหรับฉันด้วยชื่อและ artifactId และที่เก็บหรือไม่? หรือมีวิธีการนำเข้าโครงการเป็นโครงการ Maven ตั้งแต่แรกไหม (เมื่อใดก็ตามที่ฉันพยายามสร้างโครงการจากแหล่งที่มีอยู่จะให้ตัวเลือกของโครงการ Java เท่านั้น)

คำตอบ:


760

คลิกขวาที่โมดูลเลือก "เพิ่มการสนับสนุนเฟรมเวิร์ก ... " และตรวจสอบเทคโนโลยี "Maven"

(สิ่งนี้จะสร้างpom.xmlสำหรับคุณที่จะแก้ไขด้วย)

หากคุณหมายถึงการเพิ่มองค์ประกอบที่เก็บซอร์สฉันคิดว่าคุณต้องทำด้วยตนเอง - ไม่แน่ใจ

Pre-IntelliJ 13 สิ่งนี้จะไม่แปลงโครงการเป็นเค้าโครง Maven Standard Directory 13+


3
สิ่งที่ฉันกำลังมองหา! และใช่ฉันหมายถึงการเพิ่มองค์ประกอบพื้นที่เก็บข้อมูล maven2 "กลาง" เริ่มต้น แต่ฉันสามารถเพิ่มได้ด้วยตัวเองไม่ใช่เรื่องใหญ่
Neil Traft

1
เย็น. แต่คุณไม่ควรต้องเพิ่มมันเข้าไป มันเป็นค่าเริ่มต้นแล้ว
Dave Newton

46
จะเกิดอะไรขึ้นถ้าฉันไม่มีตัวเลือกนั้น

2
"ปลั๊กอิน" ตัวไหน ฉันมีปลั๊ก maven 2 อัน (มาเป็นค่าเริ่มต้นด้วย IntelliJ) ยังไม่มีตัวเลือก "Maven" ใน Add Frameworks
Nick

1
ขออภัยสำหรับการคืนค่าโพสต์เก่านี้ แต่มีวิธีอัตโนมัติในการใส่การอ้างอิง jsf ลงใน pom หรือไม่? pom ถูกสร้างขึ้น แต่ว่างเปล่าฉันต้องการมีการอ้างอิงที่เหมาะสมทั้งหมดของโครงการ jsf ภายใน pom
MrSir

76

ภาพสำหรับผู้ที่ได้รับประโยชน์จากมัน

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

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


ขอบคุณมาก .....
smack cherry

31
  1. เปิด 'Maven projects' (แท็บทางด้านขวา)
  2. ใช้ 'เพิ่มโครงการ Maven'
  3. ค้นหา pom.xml ของคุณ

1
เมื่อฉันมี URL คอมไพล์ผู้กำกับหลักเมื่อมีโปรเจ็กต์ย่อยจำนวนมากโปรเจ็กต์ย่อยไม่ถูกจดจำเป็น Maven คำตอบนี้ช่วย เพื่อให้ชัดเจนฟังก์ชั่นนี้มีอยู่ในหน้าต่างเครื่องมือ Maven
ซิลเวสเตอร์

คำตอบนี้ช่วยให้ฉันเชื่อมโยงโครงการ Gradle อีกครั้งกลับไปที่ Maven เพียงต้องการยกเลิกการเชื่อมโยง (ใช้เครื่องหมายลบ) บนเมนู Gradle แบบอะนาล็อก
vphilipnyc

6

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

  1. การตั้งค่าคำอธิบายประกอบจะเปลี่ยนไปสำหรับโมดูล
  2. คอมไพเลอร์เอาต์พุตพา ธ ถูกเปลี่ยนสำหรับโมดูล
  3. การตั้งค่าทรัพยากรจะถูกละเว้นทั้งหมดและนำมาจาก pom.xml เท่านั้น
  4. การพึ่งพาโมดูลจะเลอะและต้องตรวจสอบ
  5. การตั้งค่าภาษา / การเข้ารหัสมีการเปลี่ยนแปลงสำหรับโมดูล

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

ยิ่งไปกว่านั้นโชคไม่ดีที่ไม่มีเทมเพลต pom.xml เพียงพอที่สร้างฉันได้เพิ่มตัวอย่างซึ่งอาจช่วยแก้ปัญหาส่วนใหญ่ได้

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Name</groupId>
<artifactId>Artifact</artifactId>
<version>4.0</version>
<properties>
    <!-- Generic properties -->
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
    <!--All dependencies to put here, including module dependencies-->
</dependencies>
<build>
    <directory>${project.basedir}/target</directory>
    <outputDirectory>${project.build.directory}/classes</outputDirectory>
    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
    <testSourceDirectory> ${project.basedir}/src/test/java</testSourceDirectory>

    <resources>
        <resource>
            <directory>${project.basedir}/src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <annotationProcessors/>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

แก้ไข 2019:

  • เพิ่มการสแกนทรัพยากรแบบเรียกซ้ำ
  • เพิ่มข้อกำหนดของไดเรกทอรีซึ่งอาจมีความสำคัญเพื่อหลีกเลี่ยงความสับสนของ IDEA เกี่ยวกับโครงสร้างรากเนื้อหา

3

ฉันมีสถานการณ์ที่แตกต่างกัน แต่ก็ยังมีคำตอบนี้อยู่
ฉันได้นำเข้าโฟลเดอร์โครงการหลักของฉันที่มีหลายโครงการ Maven แต่ยังมีสิ่งอื่นที่ใช้ในโครงการนี้
IntelliJ รู้จักไฟล์ Java แต่ไม่สามารถแก้ไขการพึ่งพา Maven ได้

ฉันแก้ไขสิ่งนี้ด้วยการคลิกขวาที่ pom แต่ละอันจากนั้น "เพิ่มเป็นโครงการ maven"


3

ฉันได้แก้ไขปัญหาเดียวกันนี้โดยทำตามขั้นตอนด้านล่าง:

  1. ไฟล์> ปิดโครงการ

  2. โครงการนำเข้า

  3. เลือกคุณฉายผ่านป๊อปอัพไฟล์ระบบ

  4. เลือกปุ่มตัวเลือก "นำเข้าโครงการจากรุ่นภายนอก" และเลือกรายการ Maven

  5. และปุ่มถัดไปบางปุ่ม (เลือก JDK, ... )

จากนั้นโครงการจะถูกนำเข้าเป็นโมดูล Maven


2

สิ่งนี้แก้ไขได้สำหรับฉัน: เปิดแท็บโครงการ Maven ทางด้านขวา เพิ่ม pom หากยังไม่ปรากฏจากนั้นคลิกรีเฟรชที่ด้านบนซ้ายของแท็บ


0

วิธีที่ง่ายที่สุดคือการเพิ่มโครงการเป็นโครงการ Maven โดยตรง ในการทำเช่นนี้ใน project explorer ทางซ้ายคลิกขวาที่ไฟล์ POM สำหรับโครงการที่ด้านล่างของเมนูบริบทคุณจะเห็นตัวเลือกที่เรียกว่า 'เพิ่มเป็น Maven Project' คลิกมัน สิ่งนี้จะแปลงโครงการเป็นโครงการ Maven โดยอัตโนมัติ

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