如何编译.m2中的所有.jars?

sim*_*ico 4 printf command-line javac find maven

我正在尝试调试mvn compile具有许多依赖关系的文件javac.

这就是我试图这样做的方式:

CLASSPATH=`find ~/.m2 -name *.jar -print0`; javac -verbose BogusFile.java
Run Code Online (Sandbox Code Playgroud)

我的问题是,我不知道如何告诉find将unix文件separator(:)中找到的每个jar分开.

也许-printf有解决方案?

FrV*_*aBe 8

对不起,我无法回答您的问题,但提供了其他解决方案.

如果需要为maven项目构建类路径,可以在项目中运行Maven Dependency Plugin的copy-dependencies目标:

mvn dependency:copy-dependencies
Run Code Online (Sandbox Code Playgroud)

Maven会将项目的所有依赖项(也是可传递的)复制到target/dependency目录,并且可以将类路径设置为target/dependency/*;(您仍然必须包含工件jar).

例:

码:

import org.apache.commons.lang.WordUtils;
import org.apache.log4j.Logger;

public class Bogus {

    private static final Logger LOG = Logger.getLogger(Bogus.class);

    public static void main(final String[] args) {
        LOG.debug(WordUtils.capitalize("hello world"));
    }
}
Run Code Online (Sandbox Code Playgroud)

目录:

C:.
?
????src
?   ????main
?       ????java
?               Bogus.java
?
????target
    ????dependency
            commons-lang-2.6.jar
            log4j-1.2.16.jar
Run Code Online (Sandbox Code Playgroud)

编译命令:

.....\bogus>javac -cp target\dependency\*; src\main\java\Bogus.java
Run Code Online (Sandbox Code Playgroud)

结果:

C:.
?
????src
?   ????main
?       ????java
?               Bogus.class
?               Bogus.java
?
????target
    ????dependency
            commons-lang-2.6.jar
            log4j-1.2.16.jar
Run Code Online (Sandbox Code Playgroud)