用springgboot打jar包是最好的方式,需要war包部署,可以按下面流程走。
昨天(2019-04-17)在搭建完系统之后,我直接把pom的packaging改成了war,如下
<packaging>war</packaging>
因为本地日志,功能一 切都很完整,我很自信的打了一个war包放到了服务器,可是问题来了,我怎么启动都不打印出spring启动标识,也看不到问题所在,所以记录一下,免得下次再犯
以下内容来自于spring.io官方文档
92.1 create a Deployable War File - 打一个可部署的war包
第一步:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
第二步:
<packaging>war</packaging>
第三步:
If you use Maven, the following example marks the servlet container (Tomcat, in this case) as being provided:
<dependencies>
<!-- … -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- … -->
</dependencies>
If you use Gradle,
apply plugin: 'war'
四、打包的名字和一个异常处理
Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml
<failOnMissingWebXml>false</failOnMissingWebXml>
<build>
<finalName>ROOT</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
五、pom中的一个jar包错误导致启动出错
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/application/ddsp-tomcat/webapps/ROOT/WEB-INF/lib/slf4j-log4j12-1.7.19.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory
at org.springframework.util.Assert.instanceCheckFailed(Assert.java:637)
at org.springframework.util.Assert.isInstanceOf(Assert.java:537)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:274)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:99)
at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:191)
at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:170)
解决办法 ,看他上面说的应该是jar包的问题了,所以我把pom中的jar包去掉就可以了
如果有引用这个,就去掉
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-version}</version>
</dependency>