mvn如何编译源码命令_如何使用Maven编译单个文件?

bd96500e110b49cbb3cd949968f18be7.png

I set up a working maven project with mvn archetype:create ...

I can compile all the sources with mvn compile but I want to be able to compile also a single file at time.

There is a way to ask maven to compile an arbitrary single .java file?

Thanks

Updates 1:

I would specify the single file on the command line. I would choose the file at the moment of the command launch. I wouldn't modify the pom.xml.

Update 2:

Why I asked this? Because I would use autotest-java with the Vim editor.

autotest-java is an hack/extension of ZenTest (which is a Ruby application that automatically launch unit tests on every save of a Ruby file).

autotest-java requires a maven project structure and requires that your editor/IDE perform "compile on save". In fact it doesn't recognize when a .java file is modified but instead it monitors for .class files for modifications.

I succesfully used autotest-java with Netbeans (which support "compile on save") but I would use it with Vim.

解决方案

To my knowledge, this is not possible on the the command line. And it is worth noting that the (optional) parameters excludes and includes that you can define to configure the Compiler Plugin in the pom.xml are deprecated as shown below:

$ 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

...

So there is actually no real way to do what you want on the long term.

But this leads to one question. Since Maven uses incremental compilation i.e. it compiles only classes that changed on disk since the last build, why would you need to compile only one class? What is your use case?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值