从不同的maven项目复制java源文件并修改其包声明
假设我们有两个不同的maven项目;项目A和项目B 项目B使用A并需要动态(使用maven pluggins?)从项目A复制源文件“A.java”,修改其包声明并编译它(项目B应具有与项目A相同的类,但具有其他包声明..) 在修改包声明和编译所有文件之前,我试图将源文件从A复制到B 这是好办法吗 因此,项目A将其java文件公开为资源从不同的maven项目复制java源文件并修改其包声明,maven,maven-3,Maven,Maven 3,假设我们有两个不同的maven项目;项目A和项目B 项目B使用A并需要动态(使用maven pluggins?)从项目A复制源文件“A.java”,修改其包声明并编译它(项目B应具有与项目A相同的类,但具有其他包声明..) 在修改包声明和编译所有文件之前,我试图将源文件从A复制到B 这是好办法吗 因此,项目A将其java文件公开为资源 <build> <resources> <resource> <directory>src
<build>
<resources>
<resource>
<directory>src/</directory>
<includes>
<include>**/A.java</include>
</includes>
</resource>
</resources>
</build>
src/
**/A.java
但是如何将此文件复制到B(B是a中的依赖项)?“maven resources plugin”是否允许从依赖项项目复制资源,如果是,如何在“resource”中指定属性“directory”
我试图在jar依赖项中指定文件的位置,但没有成功
你还有其他主张吗
感谢maven resources插件使您能够在编译之前将java源代码复制到任何地方(您可以初始化阶段),但问题在于java文件中的包声明。您还需要修改它,这在maven中并不简单
但你为什么要这么做呢?为什么需要在两个不同的包中使用相同的代码???最后,我通过以下步骤解决了这个问题: 1-使用“maven dependency plugin”提取(解包)我想要的(jar中的源文件)包含的工件 2-使用“maven antrun插件”执行ant命令,替换字符串,创建新包并移动修改的源。。 看 3-使用“build helper maven plugin”将编译器指向新的源代码包,以便在编译阶段包含它们
PS:这三个步骤必须发生在“生成源”阶段 我不认为在maven中有一种简单的方法可以做到这一点,但我在其他项目中见过使用ant实现这一点。您可以创建一个ant脚本来实现这一点(这解释了您需要运行哪些ant任务),然后您可以使用maven antrun插件从maven运行ant脚本,这对我很有帮助:)