我有一个项目(春季启动,maven,战争),我需要将它分成两个项目。新项目取决于第一个项目中的类,因此新项目依赖于第一个项目。不幸的是,两个项目都有主类,新项目总是从第一个项目运行主类,当它被部署到tomcat时。我已经在我的pom.xml中定义了开始类和主类,我可以看到,生成的war文件包含带正确主类的清单,但它没有帮助......我做错了什么?< / p>
来自新项目的我的pom.xml(重要部分):
<project ...
<properties>
<start-class>x.y.z.a.NewApplication</start-class>
</properties>
...
<dependency>
<groupId>x.y.z</groupId>
<artifactId>OriginalProject</artifactId>
<version>1</version>
<classifier>classes</classifier>
</dependency>
...
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>x.y.z.a.NewApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>x.y.z.a.NewApplication</mainClass>
</manifest>
</archive>
...
来自战争文件的清单:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: michal
Start-Class: x.y.z.a.NewApplication
Spring-Boot-Version: 1.2.1.RELEASE
Created-By: Apache Maven 3.0.5
Build-Jdk: 1.8.0_25
Main-Class: org.springframework.boot.loader.WarLauncher
应用程序在Apache Tomcat 8.0.12上运行。
谢谢。
答案 0 :(得分:1)
我发现了我的错误 - 我必须从第一个项目覆盖SpringBootServletInitializer类以指向正确的主类。所以我在新项目中添加了SpringBootServletInitializer类的新实现。使用spring @Profile注释初始化正确的实现。