我正在开发一个构建系统,这个系统在很长一段时间内都会遇到其他不良做法的错误做法,而我正在重新编写构建版本。涉及的语言是C / C ++,Fortran,Ada和Java,目前我仍然坚持使用GNU风格的makefile - 尽管我们正在考虑其他替代品,如SCons。
话虽如此,我正在寻找一些具体的建议 - 而不是“使用不同的构建系统”等形式的建议。
无论是谁编写了我现在正在查看的特定makefile,都计划在java代码的顺序构建中看起来像这样:
LIST_OF_JAVA_FILES = file1.java
LIST_OF_JAVA_FILES += file2.java
LIST_OF_JAVA_FILES += file3.java
...
LIST_OF_JAVA_FILES += fileN.java
all: ${LIST_OF_JAVA_FILES}
${LIST_OF_JAVA_FILES} : %.class : %.java
${JAVAC} ${CLASSPATH} ${<}
如果您执行串口构建,这可以正常工作。但是,只要依赖关系进入混合,就会出现问题。
.java
文件-vs-每个目标一个目标.class
档案?
答案 0 :(得分:1)
我们的项目有类似的问题。 我们决定通过ant构建所有java代码,并从makefile中调用ant。
除非你有很多JNI(c ++&lt; ----&gt; java)依赖项,否则这对你也有用。
祝你好运。答案 1 :(得分:0)
做类似
的事情javac -cp MY_CLASSPATH Main.java
大部分时间都足够,因为它会自动解决依赖关系。有时您可能需要在命令行上使用更多文件,因为其中一些文件可能在没有明确引用的情况下使用。
还有ant
和maven
以及ivy
等等,但对于那些简单的事情来说,这是一种过度杀伤力。
答案 2 :(得分:0)
它最终成为最合适的(并且是整个Java开发的标准),只需在单个构建步骤中指定所有源文件,并允许javac
以这种方式解析所有依赖项。