SpringBoot部署linux
nohup java -jar spring-app.jar &
&的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 java -jar spring-app.jar & 的时候, 即使你用ctrl C, 那么tomact照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, tomact进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
nohup的意思是忽略SIGHUP信号, 所以当运行nohup java -jar spring-app.jar的时候, 关闭shell, 那么tomcat进程还是存在的(对SIGHUP信号免疫)。 但是, 要注意, 如果你直接在shell中用Ctrl C, 那么, tomcat进程也是会消失的(因为对SIGINT信号不免疫)
所以, &和nohup没有半毛钱的关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 那该怎么办呢? 那就用nohua java -jar spring-app.jar &吧, 两全其美。问题1:在做spring+mybatis时,自动扫描都配置正确了,却在运行时出现了如下错误。后来查看target/classes/.../dao/文件夹下,发现只有mapper的class文件,而没有xml文件,将对应的xml文件放到这个文件夹下运行就不会出现下面的错误。说明出现这个错误的原因是maven编译时没有将xml文件放进去。
问题2:resources文件夹中的配置文件都编译不到classes中去了。
问题1解决方法:
在pom.xml中添加如下代码:
<build> ... <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> ... </build>
同理,问题2解决方法:
<build> ... <resources> <!-- 不编译resources下的配置文件 --> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> ... </build>
如果上述方法还出现资源文件编译不到classes文件的问题的情况,采用如下方法:
因为xml等都属于resources文件,所以将xml文件按照包结构挪到resources文件夹下即可。
eclipse maven install 跳过 test 阶段
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
maven 命令行
mvn clean package -Dmaven.test.skip=true
总结:当打包出现异常时,首先检测自己的maven结构是否是符合maven默认的规范,如果自己新增了资源文件,比如原先是src/main/java 后来自己又新增了src/main/basic文件夹时需要在pom.xml文件中进行相应的配置
maven默认的:
<
build
>
<!--默认源代码目录-->
<
sourceDirectory
>src/main/java </
sourceDirectory
>
<!--默认测试源代码目录-->
<
testSourceDirectory
>src/test/java</
testSourceDirectory
>
<!--默认资源目录-->
<
resources
>
<
resource
>
<
directory
>src/main/resources</
directory
>
</
resource
>
</
resources
>
<!--默认测试资源目录-->
<
testResources
>
<
testResource
>
<
directory
>src/test/resources</
directory
>
</
testResource
>
</
testResources
>
</
build
>
<sourceDirectory>只能指定一个源代码目录,不能指定多个,可以使用build-helper-maven-plugin来进行代替
<
build
>
<
plugins
>
<!-- 指定多个源代码目录、多个资源文件目录 -->
<
plugin
>
<
groupId
>org.codehaus.mojo</
groupId
>
<
artifactId
>build-helper-maven-plugin</
artifactId
>
<
version
>1.8</
version
>
<
executions
>
<
execution
>
<
id
>add-source</
id
>
<
phase
>generate-sources</
phase
>
<
goals
>
<
goal
>add-source</
goal
>
</
goals
>
<
configuration
>
<
sources
>
<
source
>src/java/main</
source
>
<
source
>src/java/basic</
source
>
</
sources
>
</
configuration
>
</
execution
>
</
executions
>
</
plugin
>
</
plugins
>
</
build
>
详情也可参考这个:https://blog.csdn.net/majian_1987/article/details/50971301
自己的尝试的pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.XXX</groupId>
<artifactId>XXX</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>XXX</name>
<description>XXX管理平台</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JDBC连接数据库,因为要用HikariCP,所以需要将SpringBoot中的tomcat-jdbc排除 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- HikariCP 数据库连接池-->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<!-- <version>3.1.0</version> --><!--$NO-MVN-MAN-VER$-->
<!-- 版本号可以不用指定,Spring Boot会选用合适的版本 -->
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version><!--$NO-MVN-MAN-VER$--> <!-- 20 eclipse 好像不支持 2018.4.23-->
<scope>provided</scope>
</dependency>
<!-- api 文档生成器-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version><!-- 2.8.0 eclipse 好像不支持 2018.4.23-->
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- slf4g -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>biz.paluch.redis</groupId>
<artifactId>lettuce</artifactId>
<version>4.2.2.Final</version>
</dependency>
<!--模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.4</version>
</dependency>
<!--spring secuty oauth2 start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<!--spring secuty oauth2 end-->
<dependency>
<groupId>org.sitemesh</groupId>
<artifactId>sitemesh</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<build>
<finalName>my-spring-boot</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<executable>${JAVA8_HOME}/bin/javac</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/module</source>
<!-- <source>src/main/java</source> -->
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>