打包命令
clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dfile.encoding=UTF-8 -Pdev
[mvn] clean package 或者 clean install
普通Maven项目
Jar类型项目
配置pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptors>
<descriptor>src/main/resources/assembly/release.xml</descriptor>
</descriptors>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.demo.hello.App</mainClass><!--project 入口 -->
</manifest>
</archive>
</configuration>
<executions>
<execution> <!--执行器 mvn assembly:assembly -->
<id>make-assembly</id> <!--名字任意 -->
<phase>package</phase> <!-- 绑定package生命周期阶段上 -->
<goals>
<goal>single</goal> <!-- 该打包任务只运行一次 -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
其中 release.xml 可以不指定
<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<!-- id 标识符,添加到生成文件名称的后缀符。目标文件则是 ${artifactId}-${id}.jar。
【如hello-world-0.0.1-SNAPSHOT-FULL.jar】<id>${project.version}</id>
完整名是:pom.xml中的artifactId-version-id.jar -->
<id>FULL</id>
<!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有
zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式 -->
<formats>
<format>jar</format>
</formats>
<!-- 指定打的包是否包含打包层目录(比如finalName是terminal-dispatch,
当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下) -->
<includeBaseDirectory>false</includeBaseDirectory>
<!-- 指定将工程依赖的包打到包里的指定目录下 -->
<dependencySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact> <!-- 指定打包时是否包含工程自身生成的jar包 -->
<outputDirectory>/lib</outputDirectory> <!-- 指定将这些依赖包打到包里lib目录下 -->
<scope>runtime</scope> <!-- 用于管理依赖的部署,runtime表示只在运行时使用 -->
<includes>
<!--指定把哪些依赖包放进去 -->
<!--如果不指定 则所有的依赖都会打入,但是有的时候 我们只需要打特定依赖的包 -->
</includes>
</dependencySet>
</dependencySets>
<!-- 指定要包含的文件集,可以定义多个fileSet -->
<fileSets>
<!--管理一组文件的存放位置 -->
<fileSet>
<directory>src/main/java</directory> <!-- 指定归档文件(要打的jar包)要包含的目录(下的文件及文件夹) -->
<outputDirectory>lib</outputDirectory> <!-- 指定要将当前目录(<directory>标签中的目录放在归档文件(要打的jar包)bin目录下) -->
<includes>
<include>*.jar</include> <!-- 精确控制要包含的文件,<exclude>用于精确控制要排除的文件 -->
</includes>
<!-- <fileMode>0755</fileMode> 设置文件 UNIX 属性,是一种读写权限 -->
</fileSet>
<fileSet>
<directory>target/classes</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/</outputDirectory>
<excludes>
<exclude>./assembly/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
运行clean install 命令,生成jar包
然后通过Java命令运行,关闭cmd界面或者shell页面,会关闭程序。
java -jar hello-world-0.0.1-SNAPSHOT-FULL.jar
War类型项目
直接运行Maven命令,到target目录下面查看war包,复制到Tomcat里即可运行,会自动解压。
如果项目启动不起来,可以到conf/server.xml 修改配置。由于在Eclipse里配置过,导致配置冲突。如在
<Context docBase="D:\SOFTWARE\apache-tomcat-8.5.35\wtpwebapps\spring-web" path="/spring-web" reloadable="true" source="org.eclipse.jst.jee.server:spring-web"/>
SpringBoot的Maven项目
打包成Jar类型的Web项目
需要在pom.xml配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用clean install 命令
然后使用Java命令运行项目
java -jar sb-guide-0.0.1-SNAPSHOT.jar
打包成War类型的Web项目
- 在pom.xml文件中将jar修改为war
- 在pom.xml文件中将配置文件添加tomcat模块,可以不配置
- 设置war包的名字,也可以不设置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>sb-start</warName>
</configuration>
</plugin>
- 在启动类里继承SpringBootServletInitializer,重新configure方法
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
}
- 执行Maven命令 clean install
不加第三步
http://localhost:8080/sb-guide-0.0.1-SNAPSHOT/hello
加了第三步
http://localhost:8080/sb-start/hello
Jar包类型项目运行
后台运行
这种方式特点是ssh窗口关闭时,程序中止运行。或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台运行呢?-
- 方式一
java -jar XXX.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出那如何让窗口不锁定?
- 方式二
java -jar test.jar &
特点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
说明:&代表在后台运行。
- 方式三
nohup java -jar XXX.jar &
特点:当前ssh窗口不被锁定,当账户退出或终端关闭时,程序仍然运行。
说明:当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
- 方式四
nohup java -jar XXX.jar > temp.txt &
特点:与方式三一样
说明:command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
可通过jobs命令查看后台运行任务
jobs
那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
如果想将某个作业调回前台控制,只需要 fg + 编号即可。
fg 1
查看某端口占用的进程的pid
netstat -nlp |grep :9181
标签:xml,java,Eclipse,jar,Maven,运行,clean,打包
From: https://www.cnblogs.com/saltish/p/16583909.html