EclipseにMavenプロジェクトがあり、注釈プロセッサーを実行してコードを生成するMavenの目標があります。このコードの出力フォルダーはtarget/generated-sources/aptです。
Eclipseがこの生成されたコードを見るには、Eclipseプロジェクトにtarget/generated-sources/aptをソースフォルダーとして追加する必要があります。
ただし、これにより、「Maven Configuration Problem」というタイプのエラーが発生します。
プロジェクト構成はpom.xmlで最新ではありません。プロジェクト構成の更新を実行する
Eclipseには、Mavenのセットとは異なるソースフォルダーのセットがあるため、これがなぜ当てはまるのか理解できたと思います。しかし、生成されたソースフォルダーを表示するにはEclipseが必要なので、この異なるセットが必要です。
純粋なMavenビルドを行う場合、これらのソースフォルダーはMavenによってビルドに含まれます。
ところで、私はmaven Eclipseプラグインの公式Eclipseリリースであるm2e 1.0にアップグレードしました-以前はm2Eclipseでした。古いバージョンのm2Eclipseに戻る前に、m2eプラグインでこの問題の回避策/解決策を見つけられるかどうかを確認したいと思います。
ソースディレクトリを build-helper-plugin でアタッチする必要があります。
そのようです:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/Java/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
次のことも必要になります。
エラーメッセージを右クリックします。
プロジェクト構成がpom.xmlで最新ではないプロジェクト構成の更新を実行する
問題ビューでQuick Fixを選択し、Finishをクリックしてデフォルトを選択しますpdate project configuration。これで修正されます。
M2e/maven/aptの新しいバージョンに切り替えた後... buildhelperによって追加されたbuildpathが原因でファイルが重複しているため、builderrorsが発生したため、buildhelperから「apt-generated」フォルダを削除する必要がありました。
Eclipseの問題を修正し、M2EのMaven構成の更新を介して「apt-generated」フォルダーを追加しないために、この問題を修正するM2Eプラグインを作成しました。 maven-apt-pluginで構成されたoutputDirectoriesをプロジェクトのビルドパスに追加します。
https://bugs.Eclipse.org/bugs/show_bug.cgi?id=350081
cxf-codegen-plugin自体にライフサイクルマッピングを追加するために、CXF JIRAでリクエスト( 1 を参照)。これにはm2e 1.1が必要になりますが、ライフサイクルマッピングAPIがcxf-codegen-pluginおよびcxfよりも頻繁に変更されないと仮定すると、cxfプロジェクトの外部でコネクタを構築するよりも優れたアプローチだと思います。
これは、3.0.6バージョンも含まれているspring 3.1.1を使用してうまく機能することがわかったものです。プラグインのセットアップを取得し、pomの正しい領域に配置し、arglineおよびendorseddirsを含めてJavaソースをtarget/generated-sources/cxfフォルダーに配置し、mavenがソースを生成しましたok 。
....
<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>
Wsdlフォルダーが$ {basedir}/src/main/resourcesにある場合、自動的に検出されます
お役に立てれば! 〜ワイルドビル
何らかの理由でビルドヘルパープラグインを最も簡単な方法で使用できない場合(それほど便利ではなく、少し面倒ではありませんが)、これに対処することがわかっています:
mvn install
を実行します。右クリックしてMaven-> Update Project ...を選択して、親プロジェクトを更新しますこれは通常、SOAP WSDL(Apache CXF)やデータベースから生成されたコード(jOOQ)などのコード生成に準静的ソースを使用するプロジェクトに適しています。 APTおよびその他のAspectJのようなコードでは、ソースを頻繁に編集しているため、同様に機能しません。
ディスカバリカタログで利用可能なbuildhelper m2eコネクタを使用することもできます。 Eclipse 3.7を使用しています
Eclipse Java EE IDE Web開発者向け。バージョン:Juno Service Release 1
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo \
-DarchetypeArtifactId=gwt-maven-plugin \
-DarchetypeVersion=2.5.0
mvn clean install
完璧に動作します。
しかし、EclipseではAsincクラスで同じエラーが発生します。
プロジェクトでF5を押すだけです。この問題を修正してください。