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.