我正在为Maven制作一个插件。我需要在源Java文件中替换某些代码行(实际上是一个注释)。当然,我不打算编辑原始文件,所以我在我的插件中创建了一个新文件。但我不能让Maven使用我生成的源而不是原始的源。我从编译时尝试排除文件,但它排除了生成的文件。在不排除的情况下,我在编译项目时遇到了重复的类错误。
感谢您的任何建议!
答案 0 :(得分:0)
抱歉,英语不是我的母语。 我能够让 Maven 使用我生成的源代码而不是原始源代码。
在我的项目中,我有一个带有基本配置的类。以及包含客户端配置的目录。 在 maven 构建期间,我需要用客户端之一替换基本配置类。我通过两个插件实现了这一点:
<build>
<resources>
<resource>
<!-- Copy source file from another directory -->
<directory>${project.basedir}/../configs/${client-directory}</directory>
<targetPath>${project.basedir}/target/generated-sources/com/package</targetPath>
<includes>
<include>ClientConfig.java</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<excludes>
<!-- Exclude base config -->
<exclude>com/package/ClientConfig.java</exclude>
</excludes>
<compilerArgs>
<!-- Add client config -->
<arg>-sourcepath</arg>
<arg>${project.basedir}/target/generated-sources/</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
在 maven-compiler-plugin 的包含和排除标签中,您不能使用 java 文件的路径。您应该使用包和类名或模式。因此,您无法将生成源中的 java 文件添加到带有此标记的编译中。
你可以尝试使用这样的想法。