Ich habe ein benutzerdefiniertes Plugin, das Quellen unter generiert target/generated-sources
(beachten Sie hier keinen Werkzeugnamen). Also bekomme ich Quellen wie target/generated-sources/com/mycompany
... etc.
Dieses Format kann überhaupt nicht geändert werden. Daher kann ich Intellij so konfigurieren, dass es als Quellordner hinzugefügt wird. Ab sofort kann ich sehen, dass Intellij target/generated-sources/com
als Quellordner hinzugefügt hat .
Bitte beachten Sie, dass ich das Plugin nicht konfigurieren kann!
UPDATE 1 : Ich bin nicht damit einverstanden, dass ich meine generierten Quellen unter einem Werkzeugnamenordner ablegen muss. Es mag eine gute Konvention sein, aber wenn ich nur einen Generator habe, muss ich ihn nicht dort platzieren? Wieder habe ich in meiner pom.xml einen resources
Abschnitt, der klar angibt, dass target/generated-sources
dies als Quellordner behandelt werden soll. Dies funktioniert in Eclipse einwandfrei, daher habe ich keine Ahnung, warum Intellij meine Einstellungen nicht respektieren würde.
TL; DR -> Wenn ich target/generated-sources
in den Ressourcenbereich pom.xml
eingebe, warum ist Intellij übereifrig target/generated-sources/com
, dem Klassenpfad etwas hinzuzufügen ?
quelle
Antworten:
Sie können einfach die Projektstruktur ändern, um diesen Ordner als "Quell" -Verzeichnis hinzuzufügen.
Projektstruktur → Module → Klicken Sie auf den
generated-sources
Ordner und machen Sie ihn zu einemsources
Ordner.Oder:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
quelle
mvn idea:idea
das Problem in meinem Fall gelöst. Für Aufzeichnungen.Ich verwende Maven (SpringBoot-Anwendung) Lösung ist:
Anschließend importiert Intellij automatisch generierte Quellen in das Projekt.
quelle
Mit gradle werden die Projekteinstellungen gelöscht, wenn Sie die gradle-Einstellungen aktualisieren. Stattdessen müssen Sie die folgenden Zeilen (oder ähnliche) in Ihr build.gradle einfügen. Ich verwende kotlin also:
sourceSets { main { java { srcDir "${buildDir.absolutePath}/generated/source/kapt/main" } } }
quelle
gradle idea
. Vielen Dank! :)Die Reparatur
Gehen Sie zu Projektstruktur - Module - Quellordner und suchen Sie
target/generated-sources/antlr4/com/mycompany
- Klicken Sie auf Eigenschaften bearbeiten und setzen Sie das Paketpräfix aufcom.mycompany
.Das ist genau der Grund , warum wir festlegen können Paketpräfix auf Quelle Verz.
Anderes aber verwandtes Problem hier
quelle
src/main/antlr4/<path-to-package>/
würde es erscheinen , solange sich meine Grammatik in befindettarget/generated-sources/antlr4/<path-to-package>
. IntelliJ hat das richtige Verzeichnis automatisch als Quellstamm markiert und es war kein Paketpräfix erforderlich. Ich vermute, dass dieses Update benötigt wird, wenn Leute ihre Grammatiken direkt einfügensrc/main/antlr4
, was oft aus irgendeinem Grund empfohlen wird.Wer auch immer dieses Plugin geschrieben hat, hat es richtig vermasselt. So geht das nicht!
Jede Problemumgehung wäre ein großer Hack, machen Sie den Plugin-Entwickler auf seinen Fehler aufmerksam.
Entschuldigung, das ist das einzige, was zu tun ist.
OK, hier ist ein Hack. Verwenden Sie direkt nach der Ausführung Ihres Plugins das Antrun-Plugin, um das Verzeichnis an einen anderen Ort zu verschieben:
<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>process-sources</phase> <configuration> <target> <move todir="${project.build.directory}/generated-sources/toolname/com" overwrite="true"> <fileset dir="${project.build.directory}/generated-sources/com"/> </move> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
In diesem Beispiel
toolname
sollte alles ersetzt werden, das das Plugin, das den Code erstellt hat, eindeutig identifiziert undcom
für das Stammverzeichnis der erstellten Pakete steht. Wenn Sie mehrere Paketwurzeln haben, benötigen Sie wahrscheinlich mehrere<move>
Aufgaben.Aber wenn das Plugin den Ordner als Quellordner hinzufügt, sind Sie fertig.
quelle
target/generated-sources/my-tool
.Vielleicht können Sie der Generierungsquellenphase, in der der Ordner verschoben wird, einen Schritt hinzufügen?
quelle
Ich hatte vor ein paar Monaten das gleiche Problem mit Eclipse beim Importieren meines Projekts. Jetzt hatte ich das gleiche mit IntelliJ. So hat mir jemand geholfen, dies in IntelliJ zu lösen:
Menü => Ansicht => Extras Fenster => Maven-Projekt Wählen Sie im Wert spring_user => Konfiguration ausführen die Option Neuinstallation. Dies sollte eine Neuinstallation durchführen und danach sollten Sie in der Lage sein, die Klassen zu sehen
quelle
Es wurde behoben, indem "Ausgeschlossen" in der Moduleinstellung entfernt wurde (Rechtsklick auf Projekt, "Moduleinstellungen öffnen").
quelle
Die einzige funktionierende Bedingung war nach mehreren Versuchen, den versteckten .idea-Ordner aus dem Stammprojektordner zu entfernen und ihn erneut aus Intellij zu importieren
quelle
Ich wollte den zuvor von DaShaun gemachten Kommentar aktualisieren , aber da es mein erster Kommentar ist, erlaubte mir die Anwendung nicht.
Trotzdem verwende ich Eclipse und nachdem ich das unten erwähnte Code-Snippet zu meiner pom.xml hinzugefügt habe, wie von Dashun vorgeschlagen, habe ich das mvn clean-Paket ausgeführt, um die avro-Quelldateien zu generieren, aber es wurde immer noch ein Kompilierungsfehler im Arbeitsbereich angezeigt.
Ich habe mit der rechten Maustaste auf Projektname -> Maven -> Projekt aktualisieren geklickt und das Projekt aktualisiert, wodurch die Ziel- / generierten Quellen als Quellordner zu meinem Eclipse-Projekt hinzugefügt wurden.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
quelle