我有一个多模块项目,它主要是开源的,但是有一个专有的模块(编译器),所以在发布之前需要删除它的src / main / java文件夹。专有模块构建一个混淆的jar,其他模块使用它来从原始jar调用编译器来构建发行版中的其他所有内容。其中一个是用于编译系统其余部分的mojo。因此,在删除专有源之后,我需要结束工作模式,以便用户可以使用仅二进制混淆的编译器jar来编译系统的非专有部分。
调用专有模块“compiler”和它生成的混淆jar“compiler.jar”。我想我需要另一个模块“compiler-bin”,将“compiler.jar”作为依赖项,将compiler.jar添加到存储库中,使用新名称“compiler-bin.jar”,然后更改所有内容(mojo,等)依赖于compiler-bin.jar而不是compiler.jar。然后通过克隆整个树来分发,手动删除编译器源模块,手动调整poms以修复破损,并且...;这将是一项相当有意义的工作。
我希望有一些更自动的东西可以获得原始树的新副本(包含所有来源)以生成for-distribution树(减去专有源),无需进一步手动调整即可构建。
答案 0 :(得分:0)
如果你想要为你的工件进行特殊包装,那么你必须使用maven-assembly-plugin创建自己的组件。
在这里查看示例 - > https://stackoverflow.com/a/7838060/185722
答案 1 :(得分:0)
发现maven组件插件无可救药地复杂化,然后找到了更好的方法。
我只是根据我们发布的主干创建一个svn分支,然后删除分支中不需要的文件夹,将它们保存在主干中。然后测试,调整任何需要调整的东西(例如删除父poms中的子链接)。然后使用mvn版本为分支分配maven版本号(避免maven release plugin太脆弱和复杂):set -DnewVersion = whatever。提交分支,上传构建结果,您就完成了。