私のプロジェクトでは、2 つのソース ディレクトリを使用します (build-helper-maven-plugin による)。私はそれらの両方に存在するクラスを持っています。そのため、「mvn compile」を実行しようとすると、「クラスが重複しています」というエラーが表示されます。ファイルの 1 つを削除できません。両方とも存在する必要があり、pom.xml を調整してこの問題を解決する必要があります。
私はこのトピックを見てきました:
- Mavenビルドからソースを(一時的に)除外する「正しい」方法は何ですか?Eclipseから簡単に実行する方法はありますか?
- mavenを使用してコンパイルするときに.javaファイルを無視する方法は?
しかし、解決策は私にはうまくいきません。maven-compiler-plugin セクションを使用してファイルへの絶対パスを指定できないことに気付きました。ソース ディレクトリのルートからの相対パスのみです。したがって、両方を除外するか、両方を含めることができます。
POM.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<artifactId>child-project</artifactId>
<packaging>war</packaging>
<name>child-project</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<relativePath>../pom.xml</relativePath>
<version>1.0</version>
</parent>
<build>
<finalName>child-project</finalName>
<!-- First source directory. Contains A.java file i need to exclude-->
<sourceDirectory>${basedir}/src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<!-- doesn't work
<excludes>
<exclude>${basedir}/src/com/project/A.java</exclude>
</excludes>
-->
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals><goal>add-source</goal></goals>
<configuration>
<sources>
<!-- Second source directory. Contains A.java file i need to include-->
<source>${custom-directory}/webapp/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</project>