如何使用maven编译单个文件?

我用mvn archetype:create ...设置了一个正在运行的maven项目mvn archetype:create ...我可以使用mvn compile编译所有源代码,但我希望能够同时编译一个文件。

有一种方法可以让maven编译任意单个.java文件吗?

谢谢

更新1:

我会在命令行上指定单个文件。 我会在命令启动时选择该文件。 我不会修改pom.xml。

更新2:

为什么我问这个? 因为我会在Vim编辑器中使用autotest-java

autotest-java是ZenTest的一个hack /扩展(它是一个Ruby应用程序,可以在每次保存Ruby文件时自动启动unit testing)。

autotest-java需要maven项目结构,并且要求编辑器/ IDE执行“save on save”。 事实上,它无法识别.java文件何时被修改,而是监视.class文件以进行修改。

我成功地将autotest-java与Netbeans一起使用(支持“编译保存”),但我会将它与Vim一起使用。

据我所知,这在命令行中是不可能的。 值得注意的是,(可选)参数excludesincludes您可以定义以配置pom.xml中的编译器插件已弃用,如下所示:

 $ mvn help:describe -Dcmd = compiler:compile -Ddetail
 [INFO]扫描项目......
 [INFO]在存储库中搜索前缀为“help”的插件。
 [INFO] ----------------------------------------------- -------------------------
 [INFO]构建沙箱
 [INFO]任务段:[help:describe](聚合器式)
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [help:describe {execution:default-cli}]
 [INFO]'compiler:compile'是一个插件目标(又名mojo)。
 Mojo:'编译器:编译'
编译:编译
  描述:编译应用程序源
  已过时。 没有理由给出
  实现:org.apache.maven.plugin.CompilerMojo
  语言:java
  绑定到阶段:编译

  可用参数:

     ...

    排除
      编译器的排除filter列表。
      已过时。 没有理由给出

     ...

    包括
      编译器的包含filter列表。
      已过时。 没有理由给出

     ...

所以实际上没有真正的方法来做你想要的长期。

但这导致了一个问题。 由于Maven使用渐进式编译,即它只编译自上次构建以来在磁盘上更改的类,为什么还需要只编译一个类? 你的用例是什么?

您必须配置编译器插件以排除其他文件或仅包含该文件。

  ...    org.apache.maven.plugins maven-compiler-plugin       ...