缺少包及其内容的Java可执行jar文件

缺少包及其内容的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

我继承了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.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文件