精华内容
下载资源
问答
  • Maven 打包 jar

    2020-09-09 14:29:13
    maven 默认打包插件,用来创建 project jar maven-shade-plugin 打可执行包,executable(fat) jar maven-assembly-plugin 支持自定义打包方式 maven-jar-plugin maven-shade-plugin <project> <...

    Maven创建Java项目

    mvn archetype:generate "-DgroupId=<包名>" "-DartifactId=<项目名>" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"

    两种设置java版本的方法,修改pom.xml

    1. 配置properties节点下的maven编译器信息
    <properties>
      <maven.compiler.target>15</maven.compiler.target>
      <maven.compiler.source>15</maven.compiler.source>
    </properties>
    
    1. 配置build > plugins > plugins > configuration 节点下的source和target节点值
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <source>15</source>
            <target>15</target>
          </configuration>
        </plugin>
    </plugins>
    

    运行结果如下
    在这里插入图片描述

    Maven 常用的打包方式

    插件 功能
    maven-jar-plugin maven 默认打包插件,用来创建 project jar
    maven-shade-plugin 打可执行包,executable(fat) jar
    maven-assembly-plugin 支持自定义打包方式
    spring-boot-maven-plugin spring boot 定制的打包方式

    java 项目打包

    maven-jar-plugin(默认打包工具)

    该组件虽然是默认添加的,但没有显示指定 MainClass 打包出来的 jar 包依旧无法运行,会提示没有主清单属性。

    在这里插入图片描述
    修改 pom.xml,添加如下配置

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                    <mainClass> ${包名.MainClass类名} </mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    

    在这里插入图片描述

    在没有引用任何依赖的情况下,上面的打包方式是可以的(即使不做任何配置,也可以正常运行)。但如果你的项目有引用第三方lib,则需要额外添加插件maven-dependency-plugin。它的 addClasspath 和 classpathPrefix 表明,会把 lib 下的jar作为第三方依赖加入 package 里,去target目录下也可以发现多了个lib目录。

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

    maven-shade-plugin

    <project>
    	<build>
    	   <plugins>
    			<!-- maven-shade-plugin -->
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-shade-plugin</artifactId>
    				<executions>
    					<execution>
    						<phase>package</phase>
    						<goals>
    							<goal>shade</goal>
    						</goals>
    						<configuration>
    							<transformers>
    								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    								    <mainClass> ${包名.MainClass类名} </mainClass>
    								</transformer>
    							</transformers>
    						</configuration>
    					</execution>
    				</executions>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    

    maven-assembly-plugin

    <!-- Maven Assembly Plugin -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <!-- get all project dependencies -->
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <!-- MainClass in mainfest make a executable jar -->
            <archive>
                <manifest>
                    <mainClass> ${包名.MainClass类名} </mainClass>
                </manifest>
            </archive>
        </configuration>
        <executions>
            <execution>
                <id>make-assembly</id>
                <!-- bind to the packaging phase -->
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    spring boot 项目打包

    spring-boot-maven-plugin

    设置打包类型

    spring 之前基本都是打成 war 类型,现在以 jar 类型为主(若未配置,默认在 target 目录下生成 jar 包),查看 pom.xml

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<!-- ... -->
    	<packaging>jar</packaging>
    	<!-- ... -->
    </project>
    

    配置插件

    创建 spring boot 的时候,自动帮你添加了 spring-boot-maven-plugin,即使不对其进行任何配置操作,也可以直接使用 mvn package 命令将其打包!

    对于 spring-boot-starter-parent 的项目, 需要在properties中指定start-class启动类。

    • layout 属性用来指定打成什么类型
    类型 Main-Class 含义
    jar org.springframework.boot.loader.JarLauncher 可执行的 jar
    war org.springframework.boot.loader.warLauncher 可执行war,需要的servlet容器依赖位于WEB-INF/lib-provided
    zip org.springframework.boot.loader.PropertiesLauncher DIR,类似于JAR
    module 将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher
    none 将所有的依赖库打包,但是不打包Spring Boot的任何Launcher
    • 构建目标
    目标 含义
    run 运行 spring boot 项目
    repackage 默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin
    start / stop 在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
    build-info 生成Actuator使用的构建信息文件build-info.properties
    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.3.2.RELEASE</version>
    		<relativePath />
    	</parent>
    	
    	<properties>
    		<start-class>  ${包名.MainClass类名}  </start-class>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<java.version>14</java.version>
    	</properties>
    	
    	<build>
    		<plugins>
    			<!-- ... -->
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    				<configuration>
    					<mainClass>${start-class}</mainClass>
    					<layout>ZIP</layout>
    				</configuration>
    				<executions>
    					<execution>
    						<goals>
    							<goal>repackage</goal>
    						</goals>
    					</execution>
    				</executions>
    			</plugin>
    			<!-- ... -->
    		</plugins>
    	</build>
    </project>
    

    打包

    执行 mvn package spring-boot:repackage 进行打包,在 target 目录下就会生成打包好的 jar 文件了。使用 nautilus target/ 可以直接打开 target 所在的文件管理器进行操作
    在这里插入图片描述打开 jar 中的 /META-INF/MANIFEST.MF 文件,可以看到之前配置的 Main-Class 和 layout 类型对应的 Start-Class

    Manifest-Version: 1.0
    Created-By: Maven Jar Plugin 3.2.0
    Build-Jdk-Spec: 14
    Implementation-Title: demo
    Implementation-Version: 0.0.1-SNAPSHOT
    Main-Class: org.springframework.boot.loader.JarLauncher
    Start-Class: com.example.demo.DemoApplication
    Spring-Boot-Version: 2.3.2.RELEASE
    Spring-Boot-Classes: BOOT-INF/classes/
    Spring-Boot-Lib: BOOT-INF/lib/
    Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
    

    画蛇添足

    spring 默认自带了 spring-boot-maven-plugin 来打包程序,如果又引入 maven-shade-plugin 打包时会报如下错误
    在这里插入图片描述

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade (default) on project demo: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade for parameter resource: Cannot find ‘resource’ in class org.apache.maven.plugins.shade.resource.ManifestResourceTransformer -> [Help 1]

    打包失败

    执行 mvn package 报如下错误,提示 ApplicationTests 头部没找到 @SpringBootConfiguration 注解。
    无稽之谈是不是,spring-boot-starter-test 模块的注解通常都是 @SpringBootTest
    在这里插入图片描述
    解决办法是:删除pom.xml里的这段话

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-test</artifactId>
    	<scope>test</scope>
    </dependency>
    
    展开全文
  • maven打包jar

    2016-04-09 22:05:48
    在用到maven管理的工程,想输出jar包就不能用eclipse outport这种方式,需要用命令行maven来输出,步骤如下 1.下载maven-assembly-plugin插件 2.在pom.xml中插入 org.apache.maven.plugins maven-assembly...

    在用到maven管理的工程,想输出jar包就不能用eclipse outport这种方式,需要用命令行maven来输出,步骤如下

    1.下载maven-assembly-plugin插件

    2.在pom.xml中插入

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <!-- 应用名(最后压缩包的名字) -->
                    <finalName>buy</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
         <plugins>
    </build>

    3.在根目录下新建assembly.xml文件,并插入如下内容:

    <?xml version="1.0" encoding="GBK"?>
    <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>tgz</id>
        <!-- 应用名-run(压缩包解压后的目录名) -->
        <baseDirectory>buy</baseDirectory>
        <formats>
            <!-- 压缩包的格式,一律为tar.gz -->
            <format>tar.gz</format>
        </formats>
     
        <fileSets>
            <fileSet>
                <!-- 应用jar生成的目录 -->
                <directory>${project.build.directory}</directory>
                <!-- 输出的目录,此处为空即可 -->
                <outputDirectory></outputDirectory>
                <includes>
                    <include>*.jar</include>
                </includes>
            </fileSet>
                    <fileSet>
                <!-- 应用自定义的appctl.sh所在的bin目录 -->
                <directory>bin</directory>
                <!-- 输出的目录到应用名下的bin 目录 -->
                <outputDirectory>/bin</outputDirectory>
                <includes>
                    <include>**/**</include>
                </includes>
            </fileSet>
        </fileSets>
        <dependencySets>
            <dependencySet>
                <useProjectArtifact>true</useProjectArtifact>
                <!-- 运行时依赖统一放在lib目录下 -->
                <outputDirectory>lib</outputDirectory>
                <scope>runtime</scope>
            </dependencySet>
        </dependencySets>
    </assembly>

    4.在根目录下 mvn -U -Dmaven.test.skip=true clean package assembly:assembly,在target目录下生成名为 finalName.tar.gz的压缩包







    展开全文
  • maven打包jar的时候,有的文件不需要,不删除的话会导致jar体积太大 这是我的编译目录结构 对应的pom.xml 书写方法 <plugin> <groupId>org.apache.maven.plugins</groupId> <...

    用maven打包jar的时候,有的文件不需要,不删除的话会导致jar体积太大

    这是我的编译目录结构

    对应的pom.xml 书写方法

    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>3.0.2</version>
       <configuration>
          <!--一下分别是排除源文件目录,资源文件, 资源文件目录 根目录是target/classes-->
          <excludes>
             <exclude></exclude>
             <exclude>**/arcsoft/amd64/**</exclude>
          </excludes>
       </configuration>
    </plugin>
    展开全文
  • 在项目中使用maven引入了lib中的几个本地jar包引入方法:这种方法没有毛病,但是每次打包都会多多少少给来点小插曲,于是乎就有了下文。 二、解决方案 1》可以将jar包直接倒入到自己本地的maven仓库,这只适用...

    题记:

            这两天接手了一个第三方项目,在项目的lib文件夹中放了几个本地的jar包,真的是要了我的老命了!记录一下这难忘的学习经历!

    一、遇到的问题

         在项目中使用maven引入了lib中的几个本地jar包引入方法:这种方法没有毛病,但是每次打包都会多多少少给来点小插曲,于是乎就有了下文。

    二、解决方案

        1》可以将jar包直接倒入到自己本地的maven仓库,这只适用于自己使用

    mvn install:install-file -Dfile=mrlocateStand.jar -DgroupId=com.bonc -DartifactId=mrlocate -Dversion=1.0 -Dpackaging=jar -DlocalRepositoryPath=D:\m2\repository -Dfile.encoding=UTF-8
    

    -Dfile=jar名称
    -DgroupId=可自定义(com.mace)
    -DartifactId=可自定义(redisApp)
    -Dversion=版本号可自定义(1.0)
    -Dpackaging=jar
    -DlocalRepositoryPath=指定maven仓库地址(D:\m2\repository)
    -Dfile.encoding=UTF-8=可指定项目编码

    敲黑板:::在执行命令前要处在jar包所在的目录去执行命令!切记,切记,切记!

    剩下的就和正常的maven引入jar包一样!

    2》将jar包倒入到maven私服,之前也是用的界面操作,今天记录一次使用命令来操作。

    mvn deploy:deploy-file -Dfile=ojdbc8.jar -Dpackaging=jar -DgroupId=com.ddbj.oracle -DartifactId=ojdbc8 -Dversion=0.0.1 -Durl=http://10.106.11.33:8084/repository/maven-releases/ -DrepositoryId=releases

    其实这个命令和上边的差不多,但是最重要的是什么,你环境变量中配置的maven版本的setting.xml一定一定要配置你要上传的私服的配置。否则唧唧。

            <server>
                <id>releases</id>
                <username>admin</username>
                <password>123456</password>
                <configuration>
    				 <email>qq@qq.com</email>
    		    </configuration>
            </server>

    这就是那段神奇的配置。

    我当时配置了但是还是遇到了400的问题,当时一脸的懵逼,原因是我定义的 -Dversion=0.0.1-SNAPSHOT,就是因为这个名字上传一直失败,原因是:releases限制上传SNAPSHOT的jar。

    展开全文
  • cmd手动Maven打包jar

    2020-05-07 21:14:11
    cmd手动Maven打包jar 1.cmd进入文件目录 2.输入命令 命令:jar cvf xxx.jar yyy/. (xxx.jar:生产jar文件的名称 yyy:源文件名称)
  • 重温MAVEN-- maven打包jar

    千次阅读 2016-03-08 14:07:38
    前面有文章中讲到了怎么在eclipse中去使用Maven,现在来聊聊如何去使用Maven打包jar包,毕竟我们的项目总是需要执行的,需要放在某个环境下去跑的。 正文  首先是我们要在pom的配置文件中有配置成是打包成jar,...
  • 1、在配置文件中配置docker插件<!--docker 镜像插件--> <plugin> <groupId>com.spotify</groupId>...docker-maven-plugin</artifactId> <version>1.2.2</versi...
  • maven打包 jar中没有主清单属性

    万次阅读 2019-07-31 10:31:50
    问题: ...springboot项目通过maven打包程序后,直接执行jar包时,控制台显示“没有主清单属性”。 解决: 在maven的pom文件中,编写maven-jar-plugin 的插件,具体如下 <plugin> &...
  • maven打包jar上传远程仓库

    千次阅读 2017-07-11 14:50:47
    maven打包jar上传远程仓库 创建角色、用户 查看远程仓库地址 setting.xml文件设置 这里的id要和远程地址仓库中的ID一致 &lt;server&gt; &lt;id&gt;releases&lt;/id&gt; ...
  • maven打包jar

    2017-11-21 13:51:24
    使用maven打包java程序,打成jar包。
  • maven打包jar项目

    千次阅读 2019-06-19 13:39:13
    pom.xml配置: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>...maven-jar-plugin</artifactId> <configuration> <classDirecto...
  • 1.先改jar包 2.maven打包guns-admin.jar 敲命令clean package -Dmaven.test.skip=true 3.找到打包文件 4.敲命令,记住是jar
  • 以下描述为对问题的 抽象描述项目A 打包生成JarA,项目A依赖了Netty包和一个自己本地的JarB包打包之后JarA的 文件结构 如下:(1)JarA包的根路径下存在 JarB 和NettyJar(2)在JarA的Manifest文件中指定了 mainClass和...
  • maven打包jar以及源码

    2018-01-29 12:28:55
    项目pom.xml配置,如下 org.apache.maven.... maven-jar-plugin target/classes/ false --> org.apache.maven.plugins maven-javadoc-plugin
  • maven打包jar包时如何打包本地jar文件

    千次阅读 2018-07-20 14:57:25
    本地jar添加到maven仓库的方法。 有些包在mvn repository是没有的,例如IKAnlyzer.jar,那我们又想让maven帮助我们管理,怎么办呢?  一、安装maven环境,配置环境变量  二、下载你需要加入到mavenjar包 1、...
  • <build> <finalName>${artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot<...spring-boot-maven-plugin</artifactId> ...
  • linux平台项目中maven打包jar时提示 [ERROR] Failure executing javac, but could not parse the error: javac: invalid target release: 1.8 原因: 项目中maven打包支持jdk-1.8,系统设置的java路径为1.7 解决...
  • mvn install:install-file -Dfile=D:\\xxx.jar ... -DartifactId=pagehelper ...1.-Dfile参数:指定需要导入本地仓库的jar包名称,特别注意的是jar包需要带上路径,不然会找不到对应的jar包。 2.-DgroupId参.
  • maven打包jar时打入jsp

    2015-07-07 07:41:33
    maven打包时打入jsp,然后在普通项目中导入jar,怎么去引用jar里的jsp?
  • Maven打包jar与lib分开

    千次阅读 2019-06-11 20:42:20
    maven的默认打包插件用的是spring-boot-maven-plugin,这个插件会把项目中的代码和相关依赖一起打包成一个jar包,我们拿到这个jar包就可以去生产环境运行。但是当我们每次进行项目更新的时候,这个jar都特别大,因为...
  • 差点忘了,你的maven项目中首先要有配置docker打包以下是maven项目的配置1.pom文件中加入plugincom.spotifydockerfile-maven-plugin${dockerfile-maven-plugin.version}${docker.image.prefix}/${project.artifactI....
  • 1.maven打包插件 2.文件中不能有“org.mybatis.generator”的插件 3.如果有引用本地的jar包,需要在pom文件中添加 引用本地jar包的代码 <build> <plugins> <!--maven打包使用--> <...
  • maven 打包可执行jar 在pom中增加 &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&...
  • maven打包jar文件配置

    2019-06-01 22:59:03
    如何将工程打包成可直接运行的jar?即java -jar xxx.jar能够直接运行 必备条件: 1) 主要是MANIFEST.MF指定引导类,main函数入口Main-Class 2)如果依赖了第三包,第三包也必须打包进来 MANIFEST.MF(jar运行引导...
  • idea springboot maven 打包jar 包含本地jar

    千次阅读 2018-06-26 18:39:05
    如果需要在打包的时候依赖本地jar,需要修改增加如下配置:&lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-compiler-plugin&...
  • 最近在测试利用maven打包部署到本地仓库,自己编写了一个测试类,如下: 使用命令mvn install将测试类打包到本地,然后在本地仓库运行jar包,提示jar包中没有主清单属性。原因是打jar包的时候没有指明主类,修改...
  • SpringBoot Maven 打包JAR

    千次阅读 2017-05-15 11:00:16
    个人博客:http://www.xcan.top/ src/main/conf/${env} **/* src/main/resources **/* src/main/java **/* org.apache.maven.plugins maven-compiler-plugin org.springframework.boot spring-boot-maven-plugin ${...
  • 2.1、在pom文件之中配置Maven打包的所需的插件 2.2、在Eclipse的Maven配置之中配置Maven打包相关命令 3、在Java环境之中 通过执行不同的运行环境(dev、test、prod)运行jar 1、为何要写此文章  最近本人参与的一...
  • maven 打包jar 并连带自己依赖的jar

    万次阅读 2018-09-06 22:25:26
    1. 打包java 程序 为 可以执行的jar   使用maven 插件 添加 assembly maven插件 《manClass》 是你的main 方法 &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,254
精华内容 5,301
关键字:

maven打包jar