使用Maven测试和打包后执行Java示例

时间:2012-07-13 17:29:44

标签: java maven compilation execute

我正在尝试运行我的第一个Java程序,一个与在线API(Github上的source)交互的示例脚本。

由于它具有依赖关系,因此我按照建议的步骤使用mvn testmvn package,这似乎有效(请参阅output)。

但我不明白如何运行我刚刚编译(或打包?)的程序。 .java文件包含public final class NesstarStudyLister,因此基于pom.xml文件,我尝试(在基目录中)以下命令:

mhermans@fyr:~/tmp/nesstar-api-demo$ java -cp target/nesstar_study_lister-1.0-SNAPSHOT.jar com.nesstar.demo.NesstarStudyLister

NoClassDefFoundError中的results

如何成功运行小型Java程序?

修改

根据Dave Newton的推荐,我使用Exec Maven plugin,显然只是运行

mvn exec:java -Dexec.mainClass=com.nesstar.demo.NesstarStudyLister

在基目录中,完美地执行java程序。

Andriy Plokhotnyuk的解决方案也可以使用以下命令:

(edit pom.xml to include the <build>...</build> information)
mvn package
java -jar target/nesstar_study_lister-1.0-SNAPSHOT-jar-with-dependencies.jar

3 个答案:

答案 0 :(得分:2)

最简单的方式通常是Exec Maven Plugin

果壳:

  • 将exec插件添加为依赖项。
  • 定义主类属性(程序的入口点)。
  • 运行exec目标。

您也可以使用Maven创建一个包含项目依赖项(jars)的目录并手动设置类路径,但是当您可以使用该插件时,IMO会很痛苦。

您还可以在单​​个文件中创建一个包含所有项目依赖项的jar,但这可能需要更多工作来明确包含/排除任何冲突的依赖项。 (但需要注意的是,这也可能是其他方法的问题。)

答案 1 :(得分:2)

添加以下插件配置以准备可执行jar:

 <project>
 ....   
   <build>
       <plugins>    
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>com.nesstar.demo.NesstarStudyLister</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </execution>
            </executions>
        </plugin>

       </plugins>
   </build>
  ...
</project>

然后转到目标目录并运行:

java -jar nesstar_study_lister-1.0-SNAPSHOT-jar-with-dependencies.jar 

答案 2 :(得分:0)

你需要创建一个可执行jar文件,然后使用java -jar filedirectory / fileName.jar

相关问题