如何为Java主方法调用运行Maven

时间:2014-10-15 13:47:31

标签: java maven

我使用maven选项时很新 - 很抱歉一个简单的问题。

我事先询问过如何运行java代码(调用函数)并得到一个明确的答案..但是 这个配置似乎有些不对劲。或者是因为我没有使用正确的启动参数?

<build>
<plugins>
....
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3.2</version>
    <executions>
      <execution>
        <goals>
          <goal>java</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
       <mainClass>org.package.Separator.Main</mainClass>
    </configuration>
  </plugin>

</plugins>
</build>

我正在使用$: mvn exec:exec运行我的POM 我得到了这样的错误:

One or more required plugin parameters are invalid/missing for 'exec:exec'

[0] Inside the definition for plugin 'exec-maven-plugin' specify the following:

<configuration>
  ...
  <executable>VALUE</executable>
</configuration>

-OR-

on the command line, specify: '-Dexec.executable=VALUE'

我已经阅读了有关此错误的内容,并尝试将配置移至执行中 其次 - 指定classpath但没有发生任何事情((  我在Separator.java类中的Main函数是这样的:

static public void main(String[] arg) throws ParserConfigurationException, TransformerException, SAXException, IOException {
  //and here I call for example 
  System.out.println("LOL");
}

有些人使用:在目标之前打包(对于以前的版本),但它不能解决我的问题。

我已经改写了我的POM:

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>org.package.Separator</mainClass>
                </configuration>
            </plugin>

但现在org.package.Separator中的Class not found异常 我正在使用mvn包进行编译

3 个答案:

答案 0 :(得分:2)

  

我用$:mvn exec:exec运行我的POM我得到了这样的错误:

其实你应该跑

$: mvn exec:java

参见exec-maven-plugin:java usage上描述的示例。

Finnaly你的插件描述应该如下:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3.2</version>
    <executions>
        <execution>
            <id>default-cli</id>
            <!--<phase>validate</phase>--> <!-- or any other phase you want. -->
            <phase>integration-test</phase>
            <goals>
                <goal>java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>org.package.Separator</mainClass>
    </configuration>
</plugin>

注意!此插件仅适用于控制台中的全名声明或相位执行:

$: mvn org.codehaus.mojo:exec-maven-plugin:1.3.2:java
$: mvn integration-test

答案 1 :(得分:1)

首先尝试重命名项目的类路径org.package.Separator.Main

&#34;包&#34;用于java命名空间语法,因此不要在包类路径中使用它。

也许你应该尝试为你的目标添加阶段:

...
<executions>
    <execution>
       <phase>run</phase>
       <goals>
          <goal>java</goal>
       </goals>
       <configuration>
          <mainClass>org.package.Separator.Main</mainClass>
       </configuration>
    </execution>
</executions>
...

并执行:mvn compile run

答案 2 :(得分:0)

我遇到了同样的问题。我的问题是我的代码不在src / main / java中。包含main方法的类必须在src / main / java