我使用mvn archetype:create ...
设置了一个正在运行的maven项目
我可以使用mvn compile
编译所有源代码,但我希望能够在一次编译单个文件。
有一种方法可以让maven编译任意单个.java文件吗?
由于
更新1:
我会在命令行中指定单个文件。我会在命令启动时选择该文件。我不会修改pom.xml。
更新2:
为什么我问这个?因为我会在Vim编辑器中使用autotest-java
。
autotest-java
是ZenTest的黑客/扩展(这是一个Ruby应用程序,可以在每次保存Ruby文件时自动启动单元测试)。
autotest-java
需要maven项目结构,并要求您的编辑器/ IDE执行“save on save”。事实上,它无法识别.java文件何时被修改,而是监视.class文件以进行修改。
我成功地将autotest-java与Netbeans一起使用(支持“在保存时编译”),但我会将它与Vim一起使用。
答案 0 :(得分:3)
据我所知,这在命令行中是不可能的。值得注意的是,您可以定义用于在pom.xml
中配置编译器插件的(可选)参数excludes
和includes
,如下所示:
$ 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 ...
所以实际上没有真正的方法可以长期做你想做的事。
但这导致了一个问题。由于Maven使用增量编译,即它只编译自上次构建以来在磁盘上更改的类,为什么还需要只编译一个类?你的用例是什么?
答案 1 :(得分:1)
您必须configure the compiler plugin 排除其他文件,或包含。
<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>