Linux环境下java项目简单的部署

1.点击idea右侧栏的maven    先点击clean(主要为了清除之前打包过的jar/war包  本项目讲的是打成jar包) 再双击package    如下:

2.本项目是将配置文件  业务代码  lib三个分别打包成三个文件的     便于在开发测试阶段频繁更改配置文件  重新部署项目时来回去更改   具体在pom文件中配置如下:

<build>
   <finalName>case_center</finalName>
   <resources>
      <!-- Resource Filter -->
      <!--<resource>
         <directory>src/main/java</directory>
         <includes>
            <include>**/*.xml</include>
         </includes>
      </resource>-->
      <!--指定资源的位置-->
      <resource>
         <directory>src/main/resources</directory>
      </resource>
      <!--无法分离的jar包如果jar包不大可以选择直接打入源码jar包-->
      <!--<resource>
               &lt;!&ndash;jar包路径&ndash;&gt;
               <directory>${project.basedir}/libs</directory>
               <targetPath>BOOT-INF/lib/</targetPath>
               <includes>
                   <include>**/*.jar</include>
               </includes>
           </resource>-->
   </resources>
   <plugins>
      <!--打包jar-->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
            <!--不打包资源文件-->
            <excludes>
               <exclude>*.**</exclude>
            </excludes>
            <archive>
               <manifest>
                  <addClasspath>true</addClasspath>
                  <!--MANIFEST.MF 中 Class-Path 加入前缀-->
                  <classpathPrefix>lib/</classpathPrefix>
                  <!--jar包不包含唯一版本标识-->
                  <useUniqueVersions>false</useUniqueVersions>
                  <!--指定入口类-->
                  <mainClass>net.longjin.CaseModuleLocalJdbcApplication</mainClass>
               </manifest>
               <manifestEntries>
                  <!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->
                  <!--本地依赖包需要手动 加入Class-Path ,否则无法找到-->
                  <Class-Path>./resources/</Class-Path>
               </manifestEntries>
            </archive>
            <outputDirectory>${project.build.directory}</outputDirectory>
         </configuration>
      </plugin>

      <!--拷贝依赖 copy-dependencies-->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
            <execution>
               <id>copy-dependencies</id>
               <phase>package</phase>
               <goals>
                  <goal>copy-dependencies</goal>
               </goals>
               <configuration>
                  <outputDirectory>
                     ${project.build.directory}/lib/
                  </outputDirectory>
               </configuration>
            </execution>
         </executions>
      </plugin>

      <!--拷贝资源文件 copy-resources-->
      <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <executions>
            <execution>
               <id>copy-resources</id>
               <phase>package</phase>
               <goals>
                  <goal>copy-resources</goal>
               </goals>
               <configuration>
                  <resources>
                     <resource>
                        <directory>src/main/resources</directory>
                     </resource>
                  </resources>
                  <outputDirectory>${project.build.directory}/resources</outputDirectory>
               </configuration>
            </execution>
         </executions>
      </plugin>

      <!--spring boot repackage,依赖 maven-jar-plugin 打包的jar包 重新打包成 spring boot 的jar包-->
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <configuration>
            <!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖-->
            <includes>
               <include>
                  <groupId>null</groupId>
                  <artifactId>null</artifactId>
               </include>
            </includes>
            <layout>ZIP</layout>
            <!--使用外部配置文件,jar包里没有资源文件-->
            <addResources>true</addResources>
            <outputDirectory>${project.build.directory}</outputDirectory>
         </configuration>
         <executions>
            <execution>
               <goals>
                  <goal>repackage</goal>
               </goals>
               <configuration>
                  <!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
                  <!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
                  <!--<classifier>run</classifier>-->
               </configuration>
            </execution>
         </executions>
      </plugin>

   </plugins>
   <!--<plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>-->
   <!-- tag::plugin[] -->
   <!-- end::plugin[] -->
</build>

3.将打包后的文件上传到Linux上    我的项目是放的路径为:home/hezhipeng/javaEE    然后输入命令切换到项目所在目录  命令为:cd /home/hezhipeng/javaEE


4.然后输入启动项目命令:nohup java -jar case_center.jar &(有的同学喜欢用命令java -jar a.jar &启动   这两个命令键的区别在于前者用nohup是放入后台运行,如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up),这种情况一般适合在生产环境长时间运行。 而用 java -jar a.jar &启动的话是直接启动jar文件,在当前会话进程中开启一个子进程来运行程序,这个子进程会随着会话进程的结束而结束。例如启动完之后按ctrl+c退出之后  启动项目随之停止了   两者最明显的区别在于前者不能立马明显的看到启动打印日志   后者则立马能看到启动的打印日志 )

5.再输入查询日志打印命令:tail -f nohup.out(这里可以指定打印日志的行数  命令:tail -200 nohup.out) 如下:

6.讲到这里我们的项目已启动了   但我们有时会遇到一个重复启动  端口号被占用的问题   会报如下错误:

7.碰到如上错误  首先我们查看服务器中运行的java进程  命令:ps -ef | grep java  如下图:

8.上图我们看到进程为12144的已被启动占用了    然后我们输入命令杀死进程  命令:kill -9 12144   再次输入查看java进程的命令:ps  -ef | grep java 会发现进程已被停止

9.再次输入启动项目命令:nohup java -jar case_center.jar &   然后查看打印日志  命令: tail -200 nohup.out   如下图就成功启动了

发布了99 篇原创文章 · 获赞 26 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_39643007/article/details/103497906
今日推荐