Я пытаюсь упаковать свой код в один исполняемый файл JAR, а затем запустить тесты из JAR.Когда я запускаю
mvn package
, а затем
java -jar -cp ~/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:~/.m2/repository/junit/junit/4.11/junit-4.11.jar:. elevator-1.0-SNAPSHOT.jar cscie55.hw3.elevator.ElevatorTest
я получаю сообщение об ошибке:
Error: Could not find or load main class elevator-1.0-SNAPSHOT.jar
Если я бегу только
java -jar elevator-1.0-SNAPSHOT.jar
Я получаю сообщение об ошибке no main manifest attribute, in target/elevator-1.0-SNAPSHOT.jar
.
Затем я попытался следовать совету в Можетне выполняю jar-файл: «нет атрибута главного манифеста»
Но ни у одного из моих классов или тестов нет метода main.Я использую org.junit.runner.JUnitCore
в качестве основного метода, чтобы просто запустить тесты.
Я попытался добавить его в качестве основного класса в конфигурации maven-jar-plugin:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>org.junit.runner.JUnitCore</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Но получил сообщение об ошибке:
Error: Could not find or load main class org.junit.runner.JUnitCore
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore
Я также попытался создать класс TestRunner, у которого есть основной метод:
public class TestRunner {
public static void main(String[] args) {
JUnitCore.main("introtojava.hw3.elevator.ElevatorTest", "introtojava.hw3.zoo.animals.AnimalsTest");
}
}
Но я получил похожее сообщение об ошибке.
Я попытался использовать плагин maven-assembly-plugin, как предложено в приведенной выше ссылке, с теми же результатами.
Полностью нет идей.
Структура моего проекта:
├── Projects.iml
├── pom.xml
└── src
├── main
│ └── java
│ └── introtojava
│ └── hw3
│ ├── elevator
│ │ ├── Building.java
│ │ ├── Elevator.java
│ │ ├── ElevatorFullException.java
│ │ ├── Floor.java
│ │ └── Passenger.java
│ └── zoo
│ ├── animals
│ │ ├── Animal.java
│ │ ├── Elephant.java
│ │ ├── Hippopotamus.java
│ │ ├── Rhinoceros.java
│ │ ├── Tiger.java
│ │ └── Zebra.java
│ └── iface
│ ├── Eatable.java
│ ├── Playable.java
│ └── Speakable.java
└── test
└── java
└── introtojava
└── hw3
├── TestRunner.java
├── elevator
│ └── ElevatorTest.java
└── zoo
└── animals
└── AnimalsTest.java
Соответствующий бит моего файла pom.xml:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
${basedir}/target/classes/src
</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src</directory>
<includes>
<include>**/*.java</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</build>
</project>