首页 > 其他分享 >Eclipse中Maven打包配置

Eclipse中Maven打包配置

时间:2022-08-13 20:16:41浏览次数:59  
标签:xml java Eclipse jar Maven 运行 clean 打包

打包命令

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项目

  1. 在pom.xml文件中将jar修改为war
  2. 在pom.xml文件中将配置文件添加tomcat模块,可以不配置
  3. 设置war包的名字,也可以不设置
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <configuration>
   	<warName>sb-start</warName>
   </configuration>
</plugin>
  1. 在启动类里继承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);
	}
}
  1. 执行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

相关文章

  • maven
    目录安装win版环境变量验证命令安装win版注意xml文件配置阿里国内镜像。官网地址:https://maven.apache.org/download.cgi下载.zip文件环境变量和jdk一样验证命令......
  • C#版Unity-APK打包工具
    最近应大佬的要求,给渠道做了一个打包工具。这里说的打包工具,不是在unity里直接调用打包,而是更改已打包好的APK,进行换皮换资源换渠道操作。 话不多说,winform开起来。下......
  • Maven配置属性环境隔离
    不同的环境需要的配置属性不同时,可以通过声明多个profile来达到隔离的目的,假设开发环境我们需要jdk1.8,但是测试我们需要的事jdk18,就可以通过maven声明profiles来做,编译时,勾......
  • [JAVA]eclipse常用快捷键
    ①alt+/   (代码自动补全)    main然后alt+/补全main方法    syso然后alt+/补全输出语句②选中一行后ctrl+/     (对单行......
  • 项目打包
     安装:      webpack需要结合webpack-cli一起使用      npmiwebpackwebpackc-li--save    创建文件:       ......