我有一个生成许多(> 100个)小型Java工具的项目。
多年来,我一直使用 GNU Makefile (请参阅here)来管理我的工具的编译(比ant / Maven文件更紧凑,更简单)。基本上,我声明了 Makefile宏,该宏使用一小组参数创建了一个可执行jar:
define compile-htsjdk-cmd
$(1) : ${htsjdk.jars} \
$(addsuffix .java,$(addprefix ${src.dir}/,$(subst .,/,$(2)))) \
$(3)
(...)
${JAVAC} \
-d ${tmp.dir} \
-g -classpath "$$(subst $$(SPACE),:,$$(filter %.jar,$$^))" \
-sourcepath ${src.dir}:${generated.dir}/java $$(filter %.java,$$^)
(...)
${JAR} cfm ${dist.dir}/$(1)$(if ${standalone},-fat).jar ${tmp.mft} -C ${tmp.dir} .
(...)
endef
$(eval $(call compile-htsjdk-cmd,referencetovcf,${jvarkit.package}.tools.misc.ReferenceToVCF,${jcommander.jar}))
$(eval $(call compile-htsjdk-cmd,sam2json,${jvarkit.package}.tools.misc.SamToJson,${jcommander.jar} ${gson.jar} ))
$(eval $(call compile-htsjdk-cmd,sam2psl,${jvarkit.package}.tools.misc.SamToPsl,${jcommander.jar} ))
$(eval $(call compile-htsjdk-cmd,sam2tsv,${jvarkit.package}.tools.sam2tsv.Sam2Tsv,${jcommander.jar} ))
(...)
该系统运行了好几年没有任何问题。 现在,我想处理更多的配置(使用多个jdk,在某些清单文件集中添加特殊内容...)据我了解, gradle 将是最好的工具,实现这一目标。
我看到了一些仅具有一个目标的示例,但是我不清楚如何轻松地将Makefile转换为gradle文件。我可以将所有目标都放在同一个 build.gradle 文件中吗?我如何(并且应该?)模仿我对makefile宏所做的操作?
答案 0 :(得分:0)
好吧,我设法建立了一个很大的build.gradle
文件,其中包含对ant.javac
的动态调用:https://github.com/lindenb/jvarkit/blob/8ef260931025c29942a3231ea876b59e5c2dcc46/build.gradle
到目前为止效果很好...