将基于Maven的依赖项的传递依赖项收集到非Maven项目的类路径中

tyr*_*ter 22 java classpath maven

我正在使用一个使用Maven编译和测试的库.
我能够毫无问题地编译库.在编译时,似乎它下载了库的所有依赖项.

现在,我正在尝试在我的项目中使用该库.当我编译库时,我发现target在库文件夹中创建了一个名为的文件夹,在该文件夹中,还有一个名为的文件夹classes.我将classes文件夹添加到了我的类路径中.但是,每当我尝试在我的项目中使用不使用Maven的库时,它就说它无法找到该库的依赖项.

如何将所有库的依赖项添加到类路径中?
我是否需要手动下载所有库的依赖项并将它们添加到类路径中?
有什么方法可以让Maven为我这样做吗?
我需要做什么才能在项目中使用库?

我的项目位于与库完全不同的目录中.现在,我的项目似乎能够正确加载库文件,但不是库依赖项.

Jör*_*ann 14

当您mvn install为该库执行时,它应该已经创建了一个jar文件并将其放入target/libaryname-version.jar.最好依赖这个最终的jar而不是classes文件夹的内容.Maven还有一个目标,即下载项目的所有依赖项.你可以执行

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

在libraries文件夹中,它将所有依赖项jar复制到target/dependency.默认情况下,这还包括仅用于测试的jar,以排除您可以使用的jar

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

  • 酷哈克!它对我有用,但我的需求略有不同.在我的情况下,它足以获得类路径.您可以生成类路径并将其输出到资源中的某个文件,稍后您可以使用它.代码在这里`<plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-dependency-plugin </ artifactId> <executions> <execution> <phase> generate-sources </ phase> <目标> <goal> build-classpath </ goal> </ goals> <configuration> <outputFile> $ {project.basedir}/src/main/resources/classpath </ outputFile> </ configuration> </ execution> </处决> </插件>` (2认同)