Mam projekt Mavena w Eclipse i cele Mavena, które uruchamiają procesory adnotacji w celu generowania kodu. Folder wyjściowy dla tego kodu to target / generated-sources / apt.
Aby eclipse zobaczyło wygenerowany kod, muszę dodać target / generated-sources / apt jako folder źródłowy do projektu eclipse.
Jednak powoduje to wystąpienie błędu typu „Problem z konfiguracją Mavena”
Konfiguracja projektu nie jest aktualna z pom.xml. Uruchom aktualizację konfiguracji projektu
Myślę, że rozumiem, dlaczego tak jest, ponieważ eclipse ma inny zestaw folderów źródłowych niż zestaw mavena. Ale potrzebuję tego innego zestawu, ponieważ potrzebuję zaćmienia, aby móc zobaczyć wygenerowane foldery źródłowe ...
Podczas budowania czystego mavena te foldery źródłowe zostaną uwzględnione w kompilacji przez mavena.
btw, zaktualizowałem do oficjalnego wydania wtyczki maven eclipse, m2e 1.0 - co kiedyś było m2eclipse. Chciałbym sprawdzić, czy uda mi się znaleźć obejście / rozwiązanie tego problemu za pomocą wtyczki m2e, zanim będę musiał wrócić do starej wersji m2eclipse.
m2e connector for build-helper-maven-plugin
jest zainstalowany w Eclipsebuild-helper-maven-plugin
z<version>
określona jako3.2.0
(ostatni dzień piśmie), nie ma potrzeby, aby użyć APT M2E Connector. Obecnie pracuję nad Eclipse IDE 2020-06, używając osadzonego Maven 3.6.3 w Eclipse, a nasze problemy z folderem źródłowym posiadającym wykluczenia (**) zniknęły po próbie dodania ścieżek katalogów folderów źródłowych w. Teraz wszystkie inkluzje mają (** / *. java) w nich.Kliknij prawym przyciskiem myszy komunikat o błędzie:
w widoku problemów i wybierz opcję Szybka naprawa, a następnie kliknij przycisk Zakończ, aby wybrać domyślną konfigurację projektu aktualizacji . To rozwiązuje problem.
źródło
Po przełączeniu się na nowe wersje m2e / maven / apt ... miałem błędy builderror z powodu zduplikowanych plików, spowodowanych dodaniem ścieżki budowania przez buildhelper, więc musiałem usunąć "apt-generowane" -Folders z buildhelpera.
Aby naprawić problem w Eclipse, nie dodając folderu „apt-generowanego” za pośrednictwem aktualizacji konfiguracji Maven w M2E, napisałem wtyczkę M2E, aby naprawić ten problem. Dodaje katalogi outputDirectories skonfigurowane we wtyczce maven-apt-plugin do ścieżki budowania projektu.
https://apt-m2e.googlecode.com
źródło
W m2e 1.0 zmieniła się obsługa wtyczek Maven. Być może brakuje konkretnego rozszerzenia m2e dla wtyczki generującej kod. Oto cała dokumentacja, jaką udało mi się znaleźć.
Ten raport o błędzie może być również istotny.
źródło
https://bugs.eclipse.org/bugs/show_bug.cgi?id=350081
żądanie na CXF JIRA (patrz 1 ), aby dodać mapowania cyklu życia w samej wtyczce cxf-codegen-plugin. Wymagałoby to m2e 1.1, ale uważam, że jest to lepsze podejście niż posiadanie konektorów zbudowanych poza projektem cxf, przy założeniu, że API mapowania cyklu życia będzie się zmieniać rzadziej niż cxf-codegen-plugin i cxf.
źródło
Możesz również użyć łącznika buildhelper m2e dostępnego w katalogu wykrywania. Używam Eclipse 3.7
źródło
Eclipse Java EE IDE dla programistów WWW. Wersja: Juno Service Release 1
działają idealnie.
Ale w zaćmieniu mam ten sam błąd w klasie Asinc.
Po prostu naciśnij F5 na projekcie. Rozwiąż ten problem.
źródło
Okazało się, że to działa dobrze przy użyciu wiosny 3.1.1, która ma również wersję 3.0.6. Po skonfigurowaniu wtyczek i umieszczeniu ich w odpowiednim obszarze pom oraz dołączeniu argline i endorseddirs, aby źródła Java zostały umieszczone w folderze target / generated-sources / cxf, a następnie maven wygenerował źródła w porządku.
....
<properties>... <dependencyManagement> <dependencies>..... </dependencyManagement> <dependencies> <dependency>.... </dependencies> <!-- *************************** Build process ************************************* --> <build> <finalName>eSurety</finalName> <plugins> <!-- Force Java 6 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.4</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <!-- Deployent on AS from console <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>${version.jboss.as.maven.plugin}</version> </plugin> --> <!-- wildbill added tomcat plugin --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> </plugin> <!-- Surefire plugin before 2.9 version is buggy. No need to declare here, it's being referenced below w/ the version <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> </plugin> --> <!-- developer added these --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <endorseddirs>target/generated-sources/cxf</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <forkMode>once</forkMode> <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <endorseddirs>target/generated-sources/cxf</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkMode>once</forkMode> <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <configuration> <artifactItems> <artifactItem> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2</version> </artifactItem> <artifactItem> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.2</version> </artifactItem> </artifactItems> <outputDirectory>target/generated-sources/cxf</outputDirectory> </configuration> </plugin> </plugins> </build> <!-- *********************** Profiles ************************************ --> <profiles> <profile> <!-- When built in OpenShift the 'openshift' profile will be used when invoking mvn. --> <!-- Use this profile for any OpenShift specific customization your app will need. --> <!-- By default that is to put the resulting archive into the 'deployments' folder. --> <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html --> <id>projName</id> <build> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>process-sources</id> <phase>generate-sources</phase> <configuration> <fork>once</fork> <additionalJvmArgs>-Djava.endorsed.dirs=target/generated-sources/cxf</additionalJvmArgs> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-xjc</artifactId> <version>2.2</version> </dependency> </dependencies> </plugin> <!-- Actual war created in default target dir --> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </build> </profile> </profiles>
Jeśli twój folder wsdl znajduje się w $ {basedir} / src / main / resources, znajdzie go automatycznie
Mam nadzieję że to pomoże! ~ wildbill
źródło
W przypadku, gdy z jakiegoś powodu nie możesz użyć wtyczki pomocniczej do budowania w najprostszy sposób (choć nie tak wygodna i nieco żmudna), znalazłem rozwiązanie tego problemu:
mvn install
. Teraz odśwież projekt nadrzędny, klikając prawym przyciskiem myszy i wybierając Maven-> Aktualizuj projekt ...Zwykle działa to dobrze w projektach, które używają półstatycznego źródła do generowania kodu, takiego jak SOAP WSDL (Apache CXF) lub kod wygenerowany z bazy danych (jOOQ). W przypadku APT i innych kodów podobnych do AspectJ nie działa tak dobrze, ponieważ często edytujesz źródła.
źródło
konfiguracja wtyczki pomocnika kompilacji zadziałała dla nas.
ale pamiętaj, że folder docelowy zawsze musi być równy konfiguracji wtyczki, której używasz do samego przetwarzania adnotacji.
na przykład wtyczka maven-procesor używa domyślnie folderu docelowego $ {project.build.directory} / generated-sources / apt. jeśli chcesz mieć inne miejsce docelowe dla generowanych plików źródłowych, możesz ustawić je za pomocą tagu, jak pokazano poniżej.
<plugin> <groupId>org.bsc.maven</groupId> <artifactId>maven-processor-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>process</id> <goals> <goal>process</goal> </goals> <phase>process-sources</phase> <configuration> <defaultOutputDirectory>apt_generated</defaultOutputDirectory> <processors> <processor>com.any.processor.invoker</processor> </processors> </configuration> </execution> </executions> </plugin>
źródło
Oto rozwiązanie
źródło