Java 如何使用maven编译单个文件?
我使用Java 如何使用maven编译单个文件?,java,vim,maven-2,Java,Vim,Maven 2,我使用mvn原型:create… 我可以使用mvncile编译所有源代码,但我希望能够同时编译单个文件 有没有办法让maven编译一个任意的.java文件 谢谢 更新1: 我将在命令行中指定单个文件。我会在命令启动时选择该文件。我不会修改pom.xml 更新2: 我为什么问这个?因为我会在Vim编辑器中使用autotestjava autotestjava是ZenTest(一个Ruby应用程序,在Ruby文件的每次保存时自动启动单元测试)的一个hack/扩展 autotestjava需要mave
mvn原型:create…
我可以使用mvncile
编译所有源代码,但我希望能够同时编译单个文件
有没有办法让maven编译一个任意的.java文件
谢谢
更新1:
我将在命令行中指定单个文件。我会在命令启动时选择该文件。我不会修改pom.xml
更新2:
我为什么问这个?因为我会在Vim编辑器中使用autotestjava
autotestjava
是ZenTest(一个Ruby应用程序,在Ruby文件的每次保存时自动启动单元测试)的一个hack/扩展
autotestjava
需要maven项目结构,并要求编辑器/IDE执行“保存时编译”。事实上,它不识别.java文件何时被修改,而是监视.class文件的修改
我成功地将自动测试java与Netbeans(支持“保存时编译”)结合使用,但我会将其与Vim结合使用。您必须排除其他文件或仅包含该文件
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- put your configurations here -->
</configuration>
</plugin>
</plugins>
</build>
...
</project>
...
org.apache.maven.plugins
maven编译器插件
...
据我所知,这在命令行上是不可能的。值得注意的是,pom.xml
中的(可选)参数和您可以定义以配置编译器插件的参数已被弃用,如下所示:
$ mvn help:describe -Dcmd=compiler:compile -Ddetail
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building sandbox
[INFO] task-segment: [help:describe] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:describe {execution: default-cli}]
[INFO] 'compiler:compile' is a plugin goal (aka mojo).
Mojo: 'compiler:compile'
compiler:compile
Description: Compiles application sources
Deprecated. No reason given
Implementation: org.apache.maven.plugin.CompilerMojo
Language: java
Bound to phase: compile
Available parameters:
...
excludes
A list of exclusion filters for the compiler.
Deprecated. No reason given
...
includes
A list of inclusion filters for the compiler.
Deprecated. No reason given
...
$mvn帮助:descripe-Dcmd=编译器:compile-Ddetail
[信息]正在扫描项目。。。
[信息]正在存储库中搜索前缀为“help”的插件。
[信息]------------------------------------------------------------------------
[信息]构建沙箱
[信息]任务段:[帮助:描述](聚合器样式)
[信息]------------------------------------------------------------------------
[信息][帮助:描述{执行:默认cli}]
[INFO]“compiler:compile”是一个插件目标(又名mojo)。
魔咒:“编译器:编译”
编译器:编译
描述:编译应用程序源代码
不赞成。没有给出理由
实现:org.apache.maven.plugin.CompilerMojo
语言:java
绑定到阶段:编译
可用参数:
...
排除
编译器的排除筛选器列表。
不赞成。没有给出理由
...
包括
编译器的包含筛选器列表。
不赞成。没有给出理由
...
所以从长远来看,实际上没有真正的方法来做你想做的事情
但这引出了一个问题。既然Maven使用增量编译,即它只编译自上次构建以来在磁盘上更改的类,为什么只需要编译一个类?您的用例是什么 谢谢,但我会在命令行中指定单个文件。我会在命令启动时选择该文件。我不会修改pom.xml。在插件的配置中添加一个变量而不是一个文件路径。谢谢。你能解释一下吗?为什么?只编译一个文件有什么好处?@Joachim:我会在Vim上启用“保存时编译”,以便将Vim与autotest-java一起使用。这实际上是构建系统只编译一个文件所必需的功能。更重要的是,在C++@JoachimSauer中,根据更改编译单个文件可能比重新编译所有文件快得多…500毫秒vs 500秒..感谢您的回复。我的用例是将自动测试java与vim一起使用。