我正在尝试使用exec:exec目标使用maven exec插件运行java程序。
我需要在类路径中添加一个额外的jar(sun工具jar)
由于includePluginDependencies仅适用于exec:java目标,我认为在参数部分手动添加它,但无法找到将其连接到基类路径的方法。问题是,由于jar被定义为系统范围,maven不会将它添加到运行时类路径中,我需要手动添加它。
如果有人知道如何从命令行执行此操作,那就更好了。
提前谢谢,
Avner
您可以在下面看到插件部分
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<scope>system</scope>
<systemPath>${JDK_HOME}/lib/tools.jar</systemPath>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myArtifact</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>com.mycompany.MyMainClass</argument>
</arguments>
</configuration>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:2)
最终我决定使用maven-antrun-plugin,所以这里有一个可能的替代解决方案。
<configuration>
<target>
<property name="runtime_classpath" refid="maven.runtime.classpath"/>
<java classname="com.mycompany.MyClass"
fork="true"
spawn="false"
failonerror="true"
maxmemory="512m" >
<classpath>
<pathelement path="${runtime_classpath}" />
<pathelement path="${JDK_HOME}/lib/tools.jar" />
</classpath>
<arg value="${ant.param1}" />
<arg value="${ant.param2}" />
<arg value="${ant.param3}" />
<arg value="${ant.param4}" />
<arg value="${ant.param5}" />
</java>
</target>
</configuration>
答案 1 :(得分:1)
您可以尝试设置CLASSPATH环境变量。
答案 2 :(得分:1)
尝试添加
<argument>-Xbootclasspath/a:${env.JAVA_HOME}/lib/tools.jar</argument>
从命令行添加
-Dexec.args="-Xbootclasspath/a:$JAVA_HOME/lib/tools.jar"
另一个选择是将tools.jar声明为System依赖项,然后将exec插件范围设置为“system”。请参阅:exec-maven-plugin - classpathScope