Execution default of goal
org.springframework.boot:spring-boot-maven-plugin:1.0.1.RELEASE:repackage
failed:
Unable to find a single main class from the following candidates
私のプロジェクトはmain
メソッドを持つ複数のクラスを持っています。 Spring Boot Mavenプラグインにメインクラスとしてどのクラスを使うべきかをどうやって伝えるのですか?
Pomにスタートクラスを追加してください。
<properties>
<!-- The main class to start by executing Java -jar -->
<start-class>com.mycorp.starter.HelloWorldApplication</start-class>
</properties>
(Mavenの代わりに)Gradleを使っている人のために:
springBoot {
mainClass = "com.example.Main"
}
Spring-boot-starter-parent pomを使用しない場合は、 Springのドキュメント から。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.1.3.RELEASE</version>
<configuration>
<mainClass>my.package.MyStartClass</mainClass>
<layout>Zip</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
(Mavenの代わりに)Gradleを使っている人は、ここで を参照してください :
メインクラスは、タスクのmainClassNameプロパティを使って明示的に設定することもできます。
bootJar {
mainClassName = 'com.example.ExampleApplication'
}
あるいは、Spring Boot DSLのmainClassNameプロパティを使用して、プロジェクト全体でメインクラス名を設定できます。
springBoot {
mainClassName = 'com.example.ExampleApplication'
}
Pomでspring-boot-starter-parentを使用している場合は、Pomに次のコードを追加するだけです。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
それからmvnパッケージを実行してください。
このSpringのドキュメントページ を参照してください。
ここで非常に重要な点は、ディレクトリ構造はsrc/main/Java/nameofyourpackageでなければならないことを言及することです。
私はpom.xmlで以下のコードを試してみました、そしてそれは私のために働きました
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>myPackage.HelloWorld</mainClass>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<executable>D:\jdk1.8\bin\javaw.exe</executable>
</configuration>
</plugin>
</plugins>
Spring Boot 1.5以降、pomまたはbuild.gradleでエラーが発生しやすい文字列リテラルを完全に無視できます。再パッケージ化ツール(mavenまたはgradleプラグイン経由)は、あなたのために@SpringBootApplication
でアノテーションが付けられたものを選びます。 (詳しくはこの号を参照してください。 https://github.com/spring-projects/spring-boot/issues/6496 )
私は自分のプロジェクトの名前を変更しましたが、それでもビルドパスに古いApplication
クラスが見つかりました。私はそれを 'build'フォルダから削除しましたが、すべて問題ありませんでした。
Main-classが明示的に指定されていないときに、Java 1.9およびSpringBoot 1.5.xでこの問題が発生しました。
Java 1.8では、明示的なプロパティなしでメインクラスを見つけることができ、 'mvn package'は問題なく動作します。