gpt4 book ai didi

maven-2 - 替换maven编译中的源文件

转载 作者:行者123 更新时间:2023-12-02 12:44:32 24 4
gpt4 key购买 nike

如果特殊配置文件处于事件状态,我必须在 maven 编译 期间替换 Java 源文件。我考虑过从标准 src/main/java/ 中排除该文件,并将其从另一个源目录(如 src/main/java2/)中包含它。

但是由于文件必须具有相同的名称和包,因此排除始终会获胜,而其他目录中的文件永远不会被包含...

有任何已知的工作方法可以做到这一点吗?

最佳答案

我会使用Maven Antrun Plugin重命名“原始”源文件并从 src/main/java2 复制“特殊”源文件至src/main/java之前compile阶段。之后compile ,恢复原始源文件。类似的东西(把它放在个人资料中):

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>replace-source-file</id>
<phase>process-sources</phase>
<configuration>
<tasks>
<move file="src/main/java/com/stackoverflow/App.java" tofile="src/main/java/com/stackoverflow/App.java.moved"/>
<copy file="src/main/java2/com/stackoverflow/App.java" todir="src/main/java/com/stackoverflow/"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>restore-source-file</id>
<phase>compile</phase>
<configuration>
<tasks>
<move file="src/main/java/com/stackoverflow/App.java.moved" tofile="src/main/java/com/stackoverflow/App.java"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

更新:正如OP在评论中提到的,这种方法有一个主要缺点。如果出现编译错误,错误的源文件(和 *.java.moved 文件)将保留在 src/main/java 中。目录。这是一个问题。

一种更简洁的替代方案是将源的两个版本移动到专用模块中,并根据配置文件将一个或另一个模块声明为依赖项(正常工件将包含在配置文件事件中默认情况下)。我什至不会搞乱编译器排除。这可以工作并且很干净。

关于maven-2 - 替换maven编译中的源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com