Pytanie pokrewne Jak skonfigurować IntelliJ IDEA i / lub Maven, aby automatycznie dodawał katalogi z kodem źródłowym Java wygenerowanym przy użyciu wtyczki jaxb2-maven?
Mam niestandardową wtyczkę, która generuje źródła pod target/generated-sources
(Uwaga: tutaj nie ma nazwy narzędzia). Więc otrzymuję źródła takie jak target/generated-sources/com/mycompany
... itd.
Tego formatu nie można w ogóle zmienić, więc będę mógł skonfigurować Intellij tak, aby dodał go jako folder źródłowy. Na razie widzę, że Intellij dodał target/generated-sources/com
jako folder źródłowy.
Pamiętaj, że nie mam możliwości konfiguracji wtyczki!
UPDATE 1 : Nie zgadzam się z faktem, że MUSZĘ umieścić moje wygenerowane źródła w folderze nazw narzędzi. Może to dobra konwencja, ale jeśli mam tylko jeden generator, to nie ma potrzeby, żebym go tam umieszczał? Znowu w moim pom.xml mam resources
sekcję, która jasno wskazuje, że target/generated-sources
powinien być traktowany jako folder źródłowy. Działa to doskonale w Eclipse, więc nie mam pojęcia, dlaczego Intellij nie przestrzegałby moich ustawień.
TL; DR -> Kiedy umieszczam target/generated-sources
w sekcji zasobów, pom.xml
dlaczego Intellij nadgorliwie dodaje target/generated-sources/com
do ścieżki klas?
źródło
Odpowiedzi:
Możesz po prostu zmienić strukturę projektu, aby dodać ten folder jako katalog „źródłowy”.
Struktura projektu → Moduły → Kliknij
generated-sources
folder i utwórz z niegosources
folder.Lub:
<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>
źródło
mvn idea:idea
rozwiązało problem w moim przypadku. Do akt.Używam rozwiązania Maven (aplikacja SpringBoot):
Następnie Intellij automatycznie importuje wygenerowane źródła do projektu.
źródło
W przypadku gradle ustawienia projektu zostaną wyczyszczone po każdym odświeżeniu ustawień gradle. Zamiast tego musisz dodać następujące linie (lub podobne) w pliku build.gradle, używam kotlin, więc:
sourceSets { main { java { srcDir "${buildDir.absolutePath}/generated/source/kapt/main" } } }
źródło
gradle idea
. Dzięki! :)Poprawka
Przejdź do Struktura projektu - Moduły - Foldery źródłowe i znajdź
target/generated-sources/antlr4/com/mycompany
- kliknij Edytuj właściwości i ustaw prefiks pakietu nacom.mycompany
.To jest dokładnie powód, dla którego możemy ustawić prefiks pakietu w katalogach źródłowych.
Różne, ale związany z tym problem tutaj
źródło
src/main/antlr4/<path-to-package>/
, wtedy pojawiłaby się wtarget/generated-sources/antlr4/<path-to-package>
. IntelliJ automatycznie oznaczył poprawny katalog jako katalog źródłowy i nie był wymagany żaden prefiks pakietu. Podejrzewam, że ta poprawka jest potrzebna, gdy ludzie umieszczają swoje gramatyki bezpośredniosrc/main/antlr4
, co jest często zalecane z jakiegoś powodu.Ktokolwiek napisał tę wtyczkę, bardzo schrzanił. To nie jest sposób na zrobienie tego!
Każde obejście byłoby wielkim hackem, poinformuj twórcę wtyczki o jego błędzie.
Przepraszam, to jedyna rzecz do zrobienia.
OK, oto hack, bezpośrednio po wykonaniu wtyczki użyj wtyczki antrun, aby przenieść katalog w inne miejsce:
<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>
W tym przykładzie
toolname
należy zastąpić wszystko, co jednoznacznie identyfikuje wtyczkę, która utworzyła kod icom
oznacza katalog główny utworzonych pakietów. Jeśli masz wiele katalogów głównych pakietów, prawdopodobnie potrzebujesz wielu<move>
zadań.Ale jeśli wtyczka doda folder jako folder źródłowy, masz przerąbane.
źródło
target/generated-sources/my-tool
.Może możesz dodać krok do fazy generowania źródeł, która przenosi folder?
źródło
Miałem ten sam problem z Eclipse kilka miesięcy temu podczas importowania mojego projektu. Teraz miałem to samo z intelliJ. Oto jak ktoś pomógł mi rozwiązać ten problem w IntelliJ:
Menu => Widok => Narzędzia windows => Projekt Maven W spring_user value => Uruchom konfigurację, wybierz czystą instalację. Powinno to zrobić czystą instalację, a po tym powinieneś być w stanie zobaczyć klasy
źródło
Rozwiązany przez usunięcie „Wykluczone” w ustawieniach modułu (kliknij prawym przyciskiem myszy projekt, „Otwórz ustawienia modułu”).
źródło
Jedynym działającym warunkiem, po kilku próbach, było usunięcie ukrytego folderu .idea z głównego folderu projektu i ponowne zaimportowanie go z Intellij
źródło
Chciałem zaktualizować w komentarzu wcześniej złożonym przez DaShaun , ale ponieważ jest to mój pierwszy komentarz, aplikacja mi nie pozwoliła.
Niemniej jednak używam eclipse i po dodaniu poniższego fragmentu kodu do mojego pom.xml zgodnie z sugestią Dashun i uruchomiłem czysty pakiet mvn, aby wygenerować pliki źródłowe avro, ale nadal otrzymywałem błąd kompilacji w obszarze roboczym.
Kliknąłem prawym przyciskiem myszy project_name -> maven -> aktualizuj projekt i zaktualizowałem projekt, który dodał docelowe / wygenerowane-źródła jako folder źródłowy do mojego projektu eclipse.
<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>
źródło