我是Maven的新手,我正在努力学习如何使用它。我的依赖关系如下:
<dependency>
<groupId>com</groupId>
<artifactId>phidgets</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/phidget21.jar</systemPath>
</dependency>
我使用mvn install:file-install
安装了依赖项。之后,该项目与mvn compile
编译良好。但是,当我尝试mvn exec:java -Dexec.mainClass="myApp"
时,它无法找到phidget21.jar
中的类并抛出ClassNotFoundException
。
任何指针都会非常感激。
答案 0 :(得分:0)
您需要将exec插件配置为使用system
作用域依赖项,默认情况下使用runtime
。
您可以在POM中配置它,也可以在命令行中使用-Dexec.classpathScope=system
。
话虽如此,mvn install:install-file
在您的情况下完全是多余的,因为system
- 范围内的依赖关系永远不会通过存储库解析。
由于您已宣布成为Maven新手,我强烈建议您除非绝对必要,否则不要使用system
- 作用域依赖项;它们使您的构建更不便携。
您对mvn install:install-file
的调用意味着您可以完全取消<scope>
和<systemPath>
标记,并且按照您的意愿工作。 Maven将通过存储库解决您的依赖关系。