Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
中等/硬构建逻辑。Maven way还是ant run插件?_Maven - Fatal编程技术网

中等/硬构建逻辑。Maven way还是ant run插件?

中等/硬构建逻辑。Maven way还是ant run插件?,maven,Maven,我有一个多模块maven项目,它必须产生两个组件-测试和生产,不同的许可证信息。我想: 1) build module A. 2) invoke compiled classes of A and replace placeholders in sources of module B. 3) in final assembly invoke classes of B to calculate custom hash of entire build. 4) make build once more

我有一个多模块maven项目,它必须产生两个组件-测试和生产,不同的许可证信息。我想:

1) build module A.
2) invoke compiled classes of A and replace placeholders in sources of module B.
3) in final assembly invoke classes of B to calculate custom hash of entire build.
4) make build once more time, but with another replace value in step 2. 

如何做得更好?使用一些maven-way逻辑或ant-run插件?最好只有一个“mvn包”调用,才能使其在IDE中工作。

您的问题是一个独特的问题,您需要根据测试或生产配置文件生成两种不同类型的工件。对于你的情况,我建议

  • 在B中添加A作为依赖项
  • 再创建两个模块,例如C-test和C-prod,并在这两个项目中添加B作为依赖项
  • 现在在这些C项目中添加许可证和哈希逻辑,而不是在B项目中

  • 所以,现在如果您只运行一次mvn包,它将同时针对概要文件、测试和生产运行。

    仔细想想,但最简单的解决方案是使用不同的参数进行两次构建。一次构建的所有解决方案都太复杂了。也许以后我会明白更好的方法。自定义ant逻辑完全适合带有maven antrun插件的maven项目。尝试用原生mavenplugins实现它是个坏主意。声明性只适用于标准程序。

    试一试如何使用Maven实现这一点,最后是单个
    mvn包
    call。非常感谢!您还可以建议使用哪些插件来替换源代码中的占位符并调用已编译的类吗?您可以使用maven assembly插件或maven ant插件实现任何开箱即用的逻辑。您不能清楚地理解您的答案。C-test和C-prod中必须包含哪些内容?我在B的*.java文件中有许可证密钥占位符。在构建过程中,我想将其更改为test value并生成*test.zip。然后我想把它改为real value并生成*real.zip。我能做到没有代码重复吗?做这类事情最常见的方法是什么?好吧,根据测试或生产环境的不同,逻辑是否应该在C-test/prod项目中。