接触了一段时间的docker和spring boot后就抛弃了tomcat,前段时间做了个控制服务器功能,但是docker的特性不允许项目直接使用系统的指令,又被迫用起了tomcat。
spring boot 和docker是一对了,但是spring boot和tomcat就有点扯淡了:
步骤:
1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式;
2.修改pom.xml文件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <!-- 打成war包时名子 --> <warName>demo1111</warName> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
3.修改spring boot 启动类
@SpringBootApplication public class Demo333Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Demo333Application.class, args); } }基本都木有什么问题了。
---------------------------------------------------------------------------------------------------------------
Error:(8, 8) java: 无法访问org.springframework.web.WebApplicationInitializer
找不到org.springframework.web.WebApplicationInitializer的类文件
缺少web
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>---------------------------------------------------------------------------------------------------------------
但是,为什么会用spring boot呢,我看上的不单单它的部署简单,最看重的是它有个main方法!!!
但是spring boot 放到tomcat就有个坑,就是main方法貌似没调用。。。
@SpringBootApplication public class Demo333Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Demo333Application.class); } public static void main(String[] args) { SpringApplication.run(Demo333Application.class, args); } }
网上的写法是这样子的,但你要调的方法不能放在main里面,因为木有被调用,那只能放到configure里面~~
@SpringBootApplication public class Demo333Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { //startNetty(); return application.sources(Demo333Application.class); } public static void main(String[] args) { SpringApplication.run(Demo333Application.class, args); } }
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
自己写了几个jar包,导入项目中,在本机调试没问题,但是项目mvn打包就出问题了。就算打包没事,但在运行tomcat的时候就找不到jar包。。。
又搭起maven私有仓库来了。。。点击打开链接自己参考一下,不想自己搭的会,貌似还可以直接连本地仓库,但我以前貌似试过不行。
把那些包放进仓库后在pom.xml中引用。
在project标签中加
<repositories> <repository> <id>nexus</id> <name>nexus Repository</name> <url>http://<私有仓库ip>/nexus/content/groups/public/</url> </repository> </repositories>
在dependencies中添加自己的jar包
<dependency> <groupId>backjar</groupId> <artifactId>backjar</artifactId> <version>1.0</version> </dependency>问题又来了,如果是你在项目中没有导入本地的jar 包时,你会发现pom文件看上去貌似正常导入了,但是该有的引用却没有,所有本地项目导入jar还是要有的,就当pom只是给mvn打包时给项目打包时用的吧。