Java中Maven项目导出jar包配置的示例代码

具体代码如下所示;

<!-- 第一种打包方式 (maven-jar-plugin), 将依赖包和配置文件放到jar包外 -->
<build>
  <sourceDirectory>src/main/java</sourceDirectory>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <!-- 将<directory>目录下的文件打包到<targetPath>下 -->
      <targetPath>${project.build.directory}</targetPath>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </resource>
  </resources>
  <testSourceDirectory>src/test/java</testSourceDirectory>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </testResource>
  </testResources>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <!-- 将项目依赖包复制到<outputDirectory>指定的目录下 -->
    <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>
    <!-- 将项目依赖包的路径(与上一项中的<outputDirectory>对应)添加到classPath中 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
          </manifest>
          <manifestEntries>
            <Class-Path>./</Class-Path>
          </manifestEntries>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>
<!-- 第二种打包方式 (maven-shade-plugin), 将依赖包和配置文件放到jar包内 -->
<build>
  <directory>${project.basedir}/target</directory>
  <finalName>${project.artifactId}-${project.version}</finalName>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.21.0</version>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
        <compilerArguments>
          <extdirs>${project.basedir}/lib/</extdirs>
        </compilerArguments>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.1.0</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <minimizeJar>true</minimizeJar>
            <filters>
              <filter>
                <artifact>*:*</artifact>
              </filter>
            </filters>
            <transformers>
              <!-- 往MANIFEST文件中写入Main-Class是可执行包的必要条件。ManifestResourceTransformer可以轻松实现。 -->
              <transformer
                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
              </transformer>
              <!-- AppendingTransformer 用来处理多个jar包中存在重名的配置文件的合并,尤其是spring -->
              <transformer
                implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.handlers</resource>
              </transformer>
              <transformer
                implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.schemas</resource>
              </transformer>
            </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
<!-- 第三种打包方式 (maven-assembly-plugin) -->
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.21.0</version>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
        <compilerArguments>
          <extdirs>${project.basedir}/lib/</extdirs>
        </compilerArguments>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
          <manifest>
            <mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
          </manifest>
        </archive>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

总结

以上所述是小编给大家介绍的Java中Maven项目导出jar包配置的示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 使用maven编译Java项目实例

    综述 本文演示了用Maven编译Java项目 需要 时间:15分钟 文本编辑器或者IDE JDK 6 或者更高版本 创建项目 本例主要为了展示Maven,所以Java的项目力求简单. 创建项目结构 选 择一个项目目录,在 *nix系统上使用下面语句 mkdir -p src/main/java/hello window下使用命令 mkdir src\main\java\hello 创建如下结构: └── src └── main └── java └── hello 在src/main/java

  • 使用maven构建java9 service实例详解

    序 本文主要研究下如何在maven里头构建java9 multi module及service实例 maven 整个工程跟传统maven多module的工程结构一样,java9的一个module对应maven project的一个module.下面是根目录下的pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4

  • Maven在Java8下如何忽略Javadoc的编译错误详解

    JavaDoc简介And基础知识 (一) Java注释类型 //用于单行注释. /*...*/用于多行注释,从/*开始,到*/结束,不能嵌套. /**...*/则是为支持jdk工具javadoc.exe而特有的注释语句. 说明:javadoc 工具能从java源文件中读取第三种注释,并能识别注释中用@标识的一些特殊变量(见表),制作成Html格式的类说明文档.javadoc不但能对一个 java源文件生成注释文档,而且能对目录和包生成交叉链接的html格式的类说明文档,十分方便. (二)Java

  • java如何使用自己的maven本地仓库详解

    本地仓库 主要是一种缓存,当你使用远程仓库中下载组件后,它下一次会优先从本地进行加载,一般位于USER_HOME/.m2目录下,我们自己也可以建立公用的包,把包发布到本地仓库,自己在其它项目里直接可以用,当然如果希望在任务地方都使用自己的包,需要把它发布到远程仓库中. 像nuget,npm一样maven也是仓库 Jar的maven配置 <dependency> <groupId>javalindday</groupId> <artifactId>jpaDem

  • maven项目在实践中的构建管理之路的方法

    前言 最近一个月参与了公司几个项目的脚手架构建,适当总结下经验.之前见过太多项目依赖,构建,管理混乱不堪,导致后续的维护性差,甚至出现由此引发的事故.当时就有一个规范管理的想法. 依赖管理 依赖管理,其实就是依赖范围的管理.这里我叫他 依赖池.也就是 所有相关项目的依赖只能从这个池子里拿,不能超出其范围.池子里的依赖我们定义为都是久经考验的同志.以maven工程为例,我们可以定义 一个名为ooxx-dependencies 的 pom 类型的工程.这里用来存放我们经过技术选型并测试通过的依赖.每

  • Java编译器用maven打war包出错解决办法

    在用maven打包时,出现过如下两个错误: 错误1:程序包javax.servlet不存在,程序包javax.servlet.http不存在 错误2:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:comp

  • Java中Maven项目导出jar包配置的示例代码

    具体代码如下所示: <!-- 第一种打包方式 (maven-jar-plugin), 将依赖包和配置文件放到jar包外 --> <build> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <directory>src/main/resources</directory> <!-- 将<director

  • 详解IDEA中MAVEN项目打JAR包的简单方法

    Idea中为一般的非Web项目打Jar包是有自己的方法的,网上一搜就能查到很多. 但是如果是为Maven项目打Jar包,其实是很简单的,因为maven本身就有打Jar包的命令. 最简单的方法 首先是在maven项目的pom.xml中添加打包的插件,这里有很多种方式的.最最简单的就是只使用maven-compiler-plugin.maven-jar-plugin插件,并且指定程序入口<mainClass>.相关代码如下: pom.xml文件为: <?xml version="1

  • IDEA创建Java项目导出Jar包运行

    第一步:创建Java项目 下图中的勾去掉: 下图中输入项目名称,选择存放位置(可随意选择) 上图中点击Finish后即可完成java项目的创建. 第一次创建会出现: 不是第一次可能会出现: 第二步:编写程序 输入包名,创建class,创建main方法. 三处都可以运行main方法,红框为结果. 第三步:导出jar包 选择main方法的java文件 点击确认后会生成下图中的文件 生成jar包 第四步:运行jar包 把jar包拷贝到E盘(随意)下,按住shift+鼠标右键,在此处打开命令行窗口,执行

  • SpringBoot中maven项目打成war包部署在liunx服务器上的方法

    说明:Spring Boot由于内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再像Spring项目还需要外置的Tomcat等容器来进行部署工作了,通过启动启动类就可以建立独立的Spring应用程序.Spring Boot部署在服务器上主要分为两种方式:一是打成jar包发布,二是打成war包发布,第一种方式只需要在该服务器中运行java -jar+部署项目的名称就可以启动(不要忘了.jar后缀名),操作比较简单,第二种方式操作比较复杂一点,并且是项目发

  • IDEA对使用了第三方依赖jar包的非Maven项目打jar包的问题(图文详解)

    前言: 最近,遇到了一个问题,都快把我整疯了:这个问题开始是由 使用IDEA 对 非Maven项目进行打 Jar 包 引起的:本来就是想简简单单的打个 jar 包,并将使用的第三方依赖 jar 包打进去,但是问题就出现在了项目中依赖的第三方 jar 包( bcprov-jdk15on-1.54.jar )存在签名,那在打包过程中会把 签名 破坏掉,导致在使用打好的jar包时报错: JCE cannot authenticate the provider BC . 注意:如果依赖的第三方jar包不

  • SpringBoot中maven项目打成war包部署在linux服务器上的方法

    说明:Spring Boot由于内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再像Spring项目还需要外置的Tomcat等容器来进行部署工作了,通过启动启动类就可以建立独立的Spring应用程序.Spring Boot部署在服务器上主要分为两种方式:一是打成jar包发布,二是打成war包发布,第一种方式只需要在该服务器中运行java -jar+部署项目的名称就可以启动(不要忘了.jar后缀名),操作比较简单,第二种方式操作比较复杂一点,并且是项目发

  • 解决idea导入maven项目缺少jar包的问题

    之前一直用的elipse,现在用idea不熟悉,这里记录一下.这里以idea2017为例. 导入elipse的maven项目,提示缺少jar包,肯定是idea没有给你导包. 第一步,首先确认自己的idea和maven的环境有没有配置好. 第二步,确认自己导项目时候的Module设置. 搞定自己的maven配置之后,咱们再来看一下项目的Module设置问题. 删掉之前Module,重新再导一遍. 点击 + 之后选择项目的本地路径,然后在弹出来的界面中选择Maven,之后一路 Next ,最后点击A

  • Eclipse将Maven项目打成jar包的方法

    利用Eclipse将项目打包成jar,放入服务器执行. 1:在eclipse中选中项目,右键,Run As,Run Configurations,输入package,然后点击run执行. 2:在eclipse控制台会显示打jar的日志信息,当看到BUILD SUCCESS,代表打包成功. 3:将jar包发布到服务器 首先将middleware-0.0.1-SNAPSHOT.jar包上传到服务器任意目录,然后查看改jar包是否正在执行. ps -ef|grep java 如果存在,则执行 kill

  • Java 批量文件压缩导出并下载到本地示例代码

    主要用的是org.apache.tools.zip.ZipOutputStream  这个zip流,这里以Execl为例子. 思路首先把zip流写入到http响应输出流中,再把excel的流写入zip流中(这里可以不用生成文件再打包,只需把execl模板读出写好数据输出到zip流中,并为每次的流设置文件名) 例如:在项目webapp下execl文件中 存在1.xls,2.xls,3.xls文件 1.Controller @RequestMapping(value = "/exportAll&qu

  • Maven项目打Jar包并添加依赖步骤详解

    之前介绍了使用spring-boot-maven-plugin插件打jar包,会把所有的依赖文件都导入,然后变成了一个可执行的jar包.这样的不好的地方就是,我实际上并不需要把依赖的jar包也打入到生成的jar包里面去,仅仅需要把当前项目的代码打包.生成的jar包只要能引用到它所依赖的jar包,并且可以执行就好了. 那么一般情况下,打包时如何添加依赖呢? 使用maven-dependency-plugin插件 子项目中的pom.xml文件中,添加以下maven-dependency-plugin

随机推荐