假设我们有两个不同的maven项目;项目A和项目B
项目B使用A并需要动态(使用maven插件?)从项目A复制源文件“A.java”,修改其包声明并编译它(项目B应该与项目A具有相同的类但是其他包裹声明..)
我正在尝试将源文件从A复制到B,然后再修改包声明并编译所有。
这是一个好方法吗?
因此,项目A将其java文件公开为资源
<build>
<resources>
<resource>
<directory>src/</directory>
<includes>
<include>**/A.java</include>
</includes>
</resource>
</resources>
</build>
但是如何将此文件复制到B(B是A中的依赖项)? “maven-resources-plugin”是否允许从依赖项目中复制资源,如果是,我如何在“资源”中指定属性“directory” 我尝试通过在jar依赖项中指定文件的位置,但它不起作用
你还有其他建议吗?
由于
答案 0 :(得分:1)
最后我通过以下步骤解决了这个问题:
1 - 使用“maven-dependency-plugin”提取(解包)我想要的内容(来自jar的源文件)。
2 - 使用“maven-antrun-plugin”执行ant命令,替换字符串,创建新包并移动修改后的源代码。 见here
3 - 使用“build-helper-maven-plugin”将编译器指向新的源包,以便将它们包含在编译阶段
PS:这三个步骤必须在“generate-sources”阶段发生!
答案 1 :(得分:0)
maven-resources-plugin允许您在编译之前将java源复制到任何地方(您可以初始化阶段),但问题在于java文件中的包声明。你也需要修改它,这在maven中并不简单
但为什么你需要这样做?为什么你需要在两个不同的包中使用相同的代码???