javac选项以递归方式编译给定目录下的所有java文件
我正在使用javac编译器来编译项目中的Java文件。这些文件分布在几个包像这样:com.vistas.util,com.vistas.converter,com.vistas.LineHelper,com.current.mdcontect
。
这些软件包中的每一个都有几个java文件。我正在使用像这样的javac:
javac com/vistas/util/*.java com/vistas/converter/*.java com.vistas.LineHelper/*.java com/current/mdcontect/*.java
(一行)
除了提供这么多路径之外,我如何要求编译器递归地编译来自父com目录的所有Java文件?
回答:
我还建议使用某种构建工具(Ant或Maven,已经建议使用Ant,并且更容易入门)或处理该编译的IDE(Eclipse使用增量编译和协调策略,你甚至不必请务必按任何“编译”按钮)。
如果你需要尝试进行更大的项目,并且附近没有任何合适的构建工具,则可以随时使用一个javac
提供的小技巧:可以在文件中指定要编译的类名。你只需要javac
使用@前缀将文件名传递给。
如果你可以创建*.java
项目中所有文件的列表,则很简单:
# Linux / MacOS$ find -name "*.java" > sources.txt
$ javac @sources.txt
:: Windows
> dir /s /B *.java > sources.txt
> javac @sources.txt
优点是这是一种快速简便的解决方案。
缺点是,sources.txt
每次创建新的源或重命名现有的文件时,都必须重新生成文件,这很容易忘记(因此容易出错)并且很繁琐。
使用构建工具
从长远来看,最好使用专门用于构建软件的工具。
如果创建build.xml
描述如何构建软件的简单文件:
<project default="compile"> <target name="compile">
<mkdir dir="bin"/>
<javac srcdir="src" destdir="bin"/>
</target>
</project>
你可以通过运行以下命令来编译整个软件:
$ ant
- 好处是你正在使用易于扩展的标准构建工具。
- 缺点是你必须下载,设置和学习其他工具。请注意,大多数IDE(例如
NetBeans
和Eclipse
)都对编写构建文件提供了强大的支持,因此在这种情况下你无需下载任何内容。使用Maven
Maven的设置和使用并不是那么简单,但是学习它很有意义。这是一个很棒的教程,可以在5分钟内启动一个项目。
(对我而言)主要优点是它也可以处理依赖项,因此你无需再下载任何Jar文件并手动管理它们,我发现它对构建,打包和测试较大的项目更有用。
缺点是它的学习曲线很陡峭,并且如果Maven
插件喜欢抑制错误:-)另一件事是,很多工具也可以在Maven存储库中运行(例如Sbt用于Scala,Ivy
用于Ant,Gradle
用于Groovy
) 。
现在,什么可以提高你的开发效率。有一些开源替代方案(例如Eclipse和NetBeans,我更喜欢前者),甚至还有商业化的替代方案(例如IntelliJ),它们非常受欢迎且功能强大。
他们可以在后台管理项目建设,因此你不必处理所有命令行内容。但是,如果你知道后台实际发生的情况,那么总是很方便的,这样你就可以找出诸如的偶然错误ClassNotFoundException
。
以上是 javac选项以递归方式编译给定目录下的所有java文件 的全部内容, 来源链接: utcz.com/qa/417987.html