我使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎生成了Spring Boot Web应用程序,使用的技术包括:Spring Boot 1.4.2.RELEASE,Spring 4.3.4.RELEASE,Thymeleaf 2.1.5.RELEASE,Tomcat Embed 8.5.6。 ,Maven 3,Java 8
我有一个SpringBoot应用程序。有这两个类:
@Profile("!war") @SpringBootApplication @Import({SecurityConfig.class ,PersistenceConfig.class, ServiceConfig.class}) public class BookApplication { public static void main(String[] args) { SpringApplication.run(BookApplication.class, args); } } @Profile("war") @Import({SecurityConfig.class ,PersistenceConfig.class}) @SpringBootApplication public class BookApplicationWar extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(BookApplicationWar.class); } public static void main(String[] args) throws Exception { SpringApplication.run(BookApplicationWar.class, args); } }
我用这个命令发动战争
mvn clean package -DskipTests -Dspring.profiles.active=pebloc,war -DAPP-KEY=pebloc
但是我得到了这个错误:
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project book: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.tdk.BookApplication, com.tdk.BookApplicationWar] -> [Help 1]
如果您有多个主类,则需要在每个概要文件中显式配置主类:
<profiles> <profile> <id>profile1</id> <properties> <spring.boot.mainclass>com.SomeClass</spring.boot.mainclass> </properties> </profile> <profile> <id>profile2</id> <properties> <spring.boot.mainclass>com.SomeOtherClass</spring.boot.mainclass> </properties> </profile> </profiles>
…
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.2.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <mainClass>${spring.boot.mainclass}</mainClass> </configuration> </execution> </executions> ... </plugin>
参见 spring-boot:repackage