缺少包及其内容的Java可执行jar文件
我继承了JavaMaven项目,该项目由cucumber、junit和selenium框架组成,除了junit之外,我对这些框架还是新手。我注意到它的pkg名称位于src/test/java下,而不是src/main/java缺少包及其内容的Java可执行jar文件,java,maven,Java,Maven,我继承了JavaMaven项目,该项目由cucumber、junit和selenium框架组成,除了junit之外,我对这些框架还是新手。我注意到它的pkg名称位于src/test/java下,而不是src/main/java src/test/java com.somewhere.test FooRunner.java 我被告知可以通过在EclipseIDE中右键单击RunAs>junit测试从FooRunner类运行junit测试 import cucumber.a
src/test/java
com.somewhere.test
FooRunner.java
我被告知可以通过在EclipseIDE中右键单击RunAs>junit测试从FooRunner类运行junit测试
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(features="src/test/resources/com/sowhere/test/features",tags = {"@Test"}, plugin = {
"pretty",
"junit:target/results.xml",
"html:target/cucumber"},
dryRun = false)
public class FooRunner {
public static void main(String[] args) {
}
}
我能够很好地运行它的单元测试。我的问题是我需要这个mvn项目生成可执行jar文件,然后能够从
java -jar Foo.jar
我通过更新pom.xml文件并添加publicstaticvoidmain方法来遵循这个线程,但是当我执行jar文件时,我收到了以下错误消息
Error: Could not find or load main class com.somewhere.test.FooRunner
我把罐子换成了拉链,然后把它全部打开。令人惊讶的是,我没有看到pkg namecom.somewhere.test,但我看到了cucumber等外部库的其他pkg。是的META-INF/MANIFEST.MF有正确的数据
我很想知道为什么pkg(即com.somewhere.test)与类(即foorrunner.class)一起丢失
更新:
我从这个线程中找到了一个答案:Maven有一个src/main/java/的类放在产品jar中,而src/main/test/java/的类放在测试jar中(或刚刚测试过),运行应用程序不需要。这种分离是有意义的。测试jar也依赖于生产jar,因为它测试这些类
这可以通过goaljar:test创建。请更新您的pom.xml文件