IntelliJ - Konvertiert ein Java-Projekt / Modul in ein Maven-Projekt / Modul

398

Ich habe ein Projekt auf Bitbucket. Es werden nur die Quellen festgeschrieben. Um das Projekt auf einen neuen Computer abzurufen, habe ich in IntelliJ Versionskontrolle> Auschecken aus der Versionskontrolle verwendet.

Anschließend wird gefragt, ob ich aus dieser Quelle ein neues Projekt erstellen möchte, auf das ich mit Ja antworte. So weit, ist es gut. Es erstellt für mich ein schönes kleines Java-Projekt, das aus einem einzigen Modul besteht.

Mein Ziel bei der Umsetzung dieses Projekts in IntelliJ war es jedoch, es in ein Maven-Projekt umzuwandeln. Ich kann nirgendwo eine Option finden, mit der ich das tun kann!

Gibt es eine Möglichkeit, dass IntelliJ für mich nur eine leere leere pom.xml mit einem Namen, einer Artefakt-ID und einem Repository generiert? Oder gibt es überhaupt eine Möglichkeit, das Projekt als Maven-Projekt zu importieren? (Wenn ich versuche, ein Projekt aus einer vorhandenen Quelle zu erstellen, habe ich nur die Möglichkeit, ein Java-Projekt zu erstellen.)

Neil Traft
quelle

Antworten:

760

Klicken Sie mit der rechten Maustaste auf das Modul, wählen Sie "Framework-Unterstützung hinzufügen ..." und überprüfen Sie die "Maven" -Technologie.

(Dadurch wird auch ein pom.xmlzu ändernder Wert erstellt.)

Wenn Sie Quell-Repository-Elemente hinzufügen möchten, müssen Sie dies meiner Meinung nach manuell tun - nicht sicher.

Pre-IntelliJ 13 konvertiert das Projekt nicht in das Maven Standard Directory Layout , 13+.

Dave Newton
quelle
3
Genau das, wonach ich gesucht habe! Und ja, ich wollte das Standard-Repository-Element "Central" von maven2 hinzufügen. Aber ich kann das selbst hinzufügen, keine große Sache.
Neil Traft
1
Cool. Aber das sollten Sie nicht hinzufügen müssen; Es ist bereits die Standardeinstellung.
Dave Newton
46
Was passiert, wenn ich diese Option nicht habe?
2
welche "Plugins"? Ich habe 2 Maven-Stecker (standardmäßig mit IntelliJ geliefert). Immer noch keine "Maven" -Option in Add Frameworks
Nick
1
Es tut mir leid, dass Sie diesen alten Beitrag wiederbelebt haben, aber gibt es eine automatische Möglichkeit, die JSF-Abhängigkeiten in den POM einzufügen? Der POM wird erstellt, aber er ist leer. Ich möchte alle richtigen Abhängigkeiten eines JSF-Projekts im POM haben.
MrSir
76

Ein Bild für diejenigen, die davon profitieren.

Geben Sie hier die Bildbeschreibung ein

Nachdem Sie mit der rechten Maustaste auf den Projektnamen geklickt haben (in diesem Beispiel "Test"), wählen Sie "Framework-Unterstützung hinzufügen" und aktivieren Sie die Option "Maven".

Crt
quelle
Vielen Dank .....
Schlag Kirsche
31
  1. Öffnen Sie 'Maven-Projekte' (Registerkarte auf der rechten Seite).
  2. Verwenden Sie "Maven-Projekte hinzufügen".
  3. Finden Sie Ihre pom.xml
FazoM
quelle
1
Wenn ich bei vielen Unterprojekten eine übergeordnete Director-Git-URL hatte, wurden die Unterprojekte nicht als Maven erkannt. Diese Antwort hat geholfen. Um dies zu verdeutlichen, steht diese Funktionalität im Maven Tool-Fenster zur Verfügung.
Sylvester
Diese Antwort half mir, ein Gradle-Projekt wieder mit Maven zu verknüpfen. Es muss nur die Verknüpfung (verwenden Sie das Minuszeichen) im analogen Gradle-Menü aufgehoben werden.
vphilipnyc
6

Ich möchte den wichtigen Hinweis hinzufügen, dass das Konvertieren eines solchen Projekts Nebenwirkungen haben kann, die sich bei einem größeren Projekt bemerkbar machen. Dies liegt an der Tatsache, dass Intellij Idea (2017) einige wichtige Einstellungen nur aus der Datei pom.xml übernimmt, was zu Verwirrung führen kann. Die folgenden Abschnitte sind zumindest betroffen:

  1. Die Anmerkungseinstellungen werden für die Module geändert
  2. Der Compiler-Ausgabepfad wird für die Module geändert
  3. Ressourceneinstellungen werden vollständig ignoriert und nur aus pom.xml übernommen
  4. Modulabhängigkeiten sind durcheinander und müssen überprüft werden
  5. Sprach- / Codierungseinstellungen werden für die Module geändert

Alle diese Punkte müssen überprüft und angepasst werden, aber danach funktioniert es wie Charme.

Außerdem wurde leider keine ausreichende pom.xml-Vorlage erstellt. Ich habe ein Beispiel hinzugefügt, das zur Lösung der meisten Probleme beitragen könnte.

<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>

Edit 2019:

  • Rekursiver Ressourcenscan hinzugefügt
  • Verzeichnisspezifikation hinzugefügt, die wichtig sein könnte, um eine Verwechslung von IDEA beim Verwerfen der Inhaltsstammstruktur zu vermeiden
Thomas
quelle
3

Ich hatte ein anderes Szenario, landete aber immer noch auf dieser Antwort.
Ich hatte meinen Stammprojektordner importiert, der mehrere Maven-Projekte enthielt, aber auch einige andere Dinge, die in diesem Projekt verwendet wurden.
IntelliJ hat die Java-Dateien erkannt, die Maven-Abhängigkeiten jedoch nicht aufgelöst.

Ich habe dies behoben, indem ich mit der rechten Maustaste auf jeden Pom geklickt habe und dann "Als Maven-Projekt hinzufügen"

John Blackwell
quelle
3

Ich habe das gleiche Problem durch die folgenden Schritte behoben:

  1. Datei> Projekt schließen

  2. Projekt importieren

  3. Wählen Sie Ihr Projekt über das Popup-Fenster der Systemdatei aus

  4. Aktivieren Sie das Optionsfeld "Projekt von externem Modell importieren" und wählen Sie Maven-Eintrag

  5. Und einige Weiter-Schaltflächen (wählen Sie JDK, ...)

Anschließend wird das Projekt als Maven-Modul importiert.

Walid Ammou
quelle
2

Dies hat es für mich behoben: Öffnen Sie die Registerkarte Maven-Projekte auf der rechten Seite. Fügen Sie den POM hinzu, falls er noch nicht vorhanden ist, und klicken Sie dann oben links auf der Registerkarte auf Aktualisieren.

ZoltanT
quelle
0

Am einfachsten ist es, das Projekt direkt als Maven-Projekt hinzuzufügen. Klicken Sie dazu im Projektexplorer links mit der rechten Maustaste auf die POM-Datei für das Projekt. Im unteren Bereich des Kontextmenüs wird die Option "Als Maven-Projekt hinzufügen" angezeigt. Klicken Sie darauf. Dadurch wird das Projekt automatisch in ein Maven-Projekt konvertiert

Testilla
quelle