添加exec-maven-plugin的附加路径

时间:2010-04-06 20:11:55

标签: java maven-2 maven-plugin

我想为exec-maven-plugin添加一个额外的类路径 除了%classpath,我想添加一个额外的路径到包含资源的目录(/ Users / kornp / resources)。 目前,我的pom看起来像这样:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1.1</version>
  <configuration>
    <executable>java</executable>
    <classpathScope>runtime</classpathScope>
    <arguments>
      <argument>%classpath:/Users/kornp/resources</argument>
      <argument>org.drrabbit.maventest.App</argument>
    </arguments>
  </configuration>
</plugin>

我该如何配置?

4 个答案:

答案 0 :(得分:5)

我的源文件夹之外的特定目录中有一些配置文件。所以我为我的pom.xml文件定义了额外的资源。

我的示例目录结构是:

+ src
+ conf
  - app.properties
  - log4j.xml
- pom.xml

我的pom.xml:

<build>
  <resources>
    <resource>
      <directory>conf</directory>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
  </resources>

  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.2.1</version>
      <configuration>
        <executable>java</executable>
        <mainClass>com.mycompany.MyMainClass</mainClass>
      </configuration>
    </plugin>
  </plugins>
<build>

现在我们可以执行程序:

mvn clean compile exec:java

答案 1 :(得分:2)

您是否尝试使用commandlineArgs参数(如exec example中所述)?

答案 2 :(得分:1)

虽然看起来不那么优雅,但切换到antrun插件应该有效:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>runSomething</id>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <property name="runtime_classpath" refid="maven.runtime.classpath"/>

                    <java classname="org.drrabbit.maventest.App" 
                            fork="true" 
                            failonerror="true" 
                            maxmemory="512m">

                        <classpath>
                            <pathelement path="${project.build.directory}/some/extra/resources" />
                            <pathelement path="${runtime_classpath}" />
                        </classpath>
                    </java>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>

但是,正如您的操作建议,将额外资源放在项目之外的某个地方似乎并不是一个好主意。您应该考虑将其作为项目的一部分,或者将其作为jar并部署到maven repo,以便将其作为插件依赖项。

答案 3 :(得分:0)

好,

我调整了插件,以便可以完全指定命令行参数(包括%classpath参数)