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>
<!–jar包路径–>
<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 如下图就成功启动了