Maven为不同的目标设置了类路径是什么?
我的问题:我有一个我在Jenkins建立的项目。它从SVN签出。接下来,将另一个文件签出到workspace-root/mydir/my.properties
然后,maven test
运行。
在测试中,类通过在类路径上搜索来加载文件。为什么这样做? (我是Jenkins和maven的新手,我正试图弄清楚我正在看的工作是如何起作用的......)
答案 0 :(得分:1)
Maven使用项目中定义的<dependencies/>
将它们放在插件的类路径中。此外,在每个插件的<plugin/>
部分中,您可以定义仅供插件使用的其他<dependencies/>
(因此不会以任何方式成为最终工件的一部分,或者在mvn dependency:tree
)。
关于测试,了解以下内容非常重要:
src/main/resources
和src/test/resources
下的资源分别被复制到target/classes
和target/test-classes
。这两个目录将添加到您的类路径中。 (这同样适用于src/main/java
和src/test/java
)。
每个Maven插件都在其自己的类加载器中执行。
执行测试时,maven-surefire-plugin
通常会将测试分成单独的类加载器。
检查this链接。
答案 1 :(得分:0)
类通过在类路径上搜索来加载文件。为什么这样做?
因为这是maven的目的。它知道你的依赖关系,因为你设置它们并假设你正在构建的模块的结构,例如将添加src / main / resources,并将所有这些添加到类路径中。