Command line 如何在.m2中使用所有.jar进行编译?

Command line 如何在.m2中使用所有.jar进行编译?,command-line,maven,find,printf,javac,Command Line,Maven,Find,Printf,Javac,我正在用javac调试一个具有许多依赖项的文件的mvn编译 这就是我试图做到的: CLASSPATH=`find ~/.m2 -name *.jar -print0`; javac -verbose BogusFile.java 我的问题是,我不知道如何告诉find用unix文件分隔符(:)分隔找到的每个jar 也许-printf有解决方案?很抱歉,我无法回答您的问题,但给出了可能的其他解决方案 如果需要为maven项目构建类路径,可以在项目上运行的复制依赖项目标: mvn dependenc

我正在用
javac
调试一个具有许多依赖项的文件的
mvn编译

这就是我试图做到的:

CLASSPATH=`find ~/.m2 -name *.jar -print0`; javac -verbose BogusFile.java
我的问题是,我不知道如何告诉find用unix文件分隔符(
)分隔找到的每个jar


也许
-printf
有解决方案?

很抱歉,我无法回答您的问题,但给出了可能的其他解决方案

如果需要为maven项目构建类路径,可以在项目上运行的复制依赖项目标:

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

示例:

代码:

目录:

C:.
│
├───src
│   └───main
│       └───java
│               Bogus.java
│
└───target
    └───dependency
            commons-lang-2.6.jar
            log4j-1.2.16.jar
编译命令:

.....\bogus>javac -cp target\dependency\*; src\main\java\Bogus.java
结果:

C:.
│
├───src
│   └───main
│       └───java
│               Bogus.class
│               Bogus.java
│
└───target
    └───dependency
            commons-lang-2.6.jar
            log4j-1.2.16.jar

通过
分隔符连接所有JAR,用作编译器的类路径

export TEST_CLASSPATH=$(find ~/.m2 -name *.jar | sed -z 's/\n/:/g')
javac -classpath $TEST_CLASSPATH:./ BogusFile.java

@K:问题仍然存在,即如何用unix文件分隔符(:)?@simpatico分隔找到的每个jar如果所有jar都在一个目录中,则可以使用通配符指定类路径
target/dependency/*
(已描述)-您无需提及每个罐子,因此无需分开them@K:我的理解是,每个jar都被视为classpath dir。所以用多个罐子。但是用代码证明它@simpatico请阅读有关私密评论中提供的通配符的文档(请参阅链接)。@K:遗漏了该部分!但是当我编译它时,它并没有显示它拾取了类路径中的任何jar。正在尝试javac-verbose-cp target/dependency/*BogusFile.java报告:javac:invalid flag:target/dependency/annotations-1.3.2.jar您尝试调试的maven项目的BogusFile.java部分是吗?你想调试什么?@simpatico建议用
sed
替换Python,这可能是个好主意,但他们的建议有一个bug,无论如何,它可能应该作为一个单独的答案发布。尝试
export TEST\u CLASSPATH=$(查找~/.m2-name*.jar-print | sed's/\n/:/g')
export TEST_CLASSPATH=$(find ~/.m2 -name *.jar | sed -z 's/\n/:/g')
javac -classpath $TEST_CLASSPATH:./ BogusFile.java