Maven项目部署遇到的问题汇总

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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值