У меня есть 2 класса с основными методами в проекте maven. (NOT SPRING BOOT) класс A и класс B
class A{
public static void main(String[] args){
System.out.println("CLASS A");
}
}
class B{
public static void main(String[] args){
System.out.println("CLASS B");
}
}
И я указал основной класс по умолчанию в pom следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.A</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Теперь, когда я запускаю проект, используя java -jar
из командной строки, основной метод A выполняется как ожидалось. Команда, которую я использую, выглядит следующим образом:
java -jar myExample-Snapshot.jar
Он запускает класс А, как и ожидалось, поскольку я указал его под <mainClass>com.example.A</mainClass>
в моем пом. xml.
Теперь я хочу указать class A
или class B
, когда я выполняю свой jar из командной строки. Я попробовал следующее,
java -jar myExample-Snapshot.jar com.example.B
Но он запустил класс A (указанный в pom) с com.example.B
в качестве аргумента командной строки (хранится в String[] args
)
Затем я попытался добавить основной class B
для моего pom, как показано ниже:
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.A</mainClass>
<mainClass>com.example.B</mainClass>
</transformer>
команда: java -jar myExample-Snapshot.jar com.example.A
Но на этот раз она побежала main с class B
и полностью игнорировалась class A
. (Опять же, com.example.A
было взято в качестве аргумента командной строки)
Это выполнимо? или я должен подойти к этому другому