Maven exec插件 - 如何包含“系统”类路径?

2022-09-03 01:52:39

我有一个项目,它使用“系统”作用域来指定包含在项目目录中的jar文件。此工件不在任何 maven 存储库中,因此我必须将其作为项目的一部分包含在内。我这样做是通过以下方式:WEB-INF/lib

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>MySpecialLib</artifactId>
        <version>1.2</version>
        <scope>system</scope>
        <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/MySpecialLib-1.2.jar</systemPath>
    </dependency>

这对大多数事情都很有用。

但是现在我正试图在我的web应用程序之外,通过我添加的方法在命令行上运行一些代码,并且无法解析MySpecialLib中的代码,因为它不包含在“runtime”类路径中。main()mvn exec:java

我怎么能:

  • 将 MySpecialLib 添加到运行时类路径

  • 告诉也要使用类路径 ?mvn exec:javasystem

我已经尝试过了,但这会遗漏所有打开的内容。mvn exec:java -Dexec.classpathScope=systemruntime


答案 1

使用“编译”作用域运行 maven exec 插件 - .这将包括系统范围的依赖项。mvn exec:java -Dexec.classpathScope=compile


答案 2

正如E.G.所指出的,解决方案是在运行exec时使用编译范围。

在每次调用时:

mvn exec:java -Dexec.classpathScope=compile

或直接在 exec-plugin-configuration 中:

     <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        ...
        <configuration>
              <classpathScope>compile</classpathScope>
        </configuration>
    </plugin>

推荐