使用Maven打包时包含资源文件和源码到jar的方法

目录
  • Maven打包时包含资源文件和源码到jar
    • 在<build>中添加以下内容
    • 意义如下
  • maven打包时包含源码的问题

Maven打包时包含资源文件和源码到jar

在使用Maven打包时,我们发现最终打包之后jar中只有已经编译完成的代码class,资源文件都没了,如果有资源文件需要打包进jar的话,直接打包jar无法正常工作。

其实,在pom.xml中配置一下<build>节点即可实现把资源打包进来的操作。

在<build>中添加以下内容

<resources>
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
            <include>**/*.*</include>
        </includes>
        <filtering>false</filtering>
    </resource>
 
    <resource>
        <directory>${basedir}/src/main/java</directory>
        <includes>
            <include>**/*.*</include>
        </includes>
        <excludes>
            <exclude>**/*.java</exclude>
        </excludes>
        <filtering>false</filtering>
    </resource>
</resources>

可以看到,添加的<resources>节点中有两个<resource>子节点,分别配置了两个不同的地方的内容打包进jar(一般资源文件放在项目resource文件夹和源代码文件夹里面),其中每一个<resource>节点中的内容

意义如下

  • <directory>为被打包的资源文件的路径,${basedir}表示这个项目的根目录。
  • <includes>被包含的文件,里面的<include>**/*.*</include>表示包含其中的所有文件和文件夹。
  • <filtering>是否过滤资源文件,默认false。
  • <excludes>要排除的文件,上面的配置内容中排除了所有的java源代码文件防止把源代码也打包进去了。

如果在别的地方有资源文件,可以自己再添加<resource>节点,格式按照这个来。

需要说明的是一些jar外部包因为包含java doc注释,所以也需要将源代码文件包含进去。

这样的话也很简单,把上面的第二个<resource>节点中的整个<excludes>节点去掉即可。(即不配置排除java源代码文件)

maven打包时包含源码的问题

由于jar包和项目分开打包,并且jar包打包后不会带注释,会对代码调试增加难度,所以增加了jar包携带源码的方式,解决方式如下

1.maven-source-plugin提供项目自动将源码打包并发布的功能

在需要发布源码项目的pom.xml文件中添加如下代码即可:

<!-- Source attach plugin -->
 <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <executions>
                  <execution>
                      <id>attach-sources</id>
                      <goals>
                          <goal>jar</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>

2.删除target文件夹

3.mvan执行

  • 执行 mvn install,maven会自动将source install到repository 。
  • 执行 mvn deploy,maven会自动将source deploy到remote-repository 。
  • 执行 mvn source:jar,单独打包源码。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Maven 生成打包可执行jar包的方法步骤

    最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下 1. 需求 项目打包,满足以下要求: 1.整个项目打一个Zip包下面包括应用程序.应用程序依赖的jar包.说明文档 2.项目打的jar包可以执行不同类里的Main函数 3.项目源码打的jar包要与依赖的第三方jar包分开 4.项目里的执行脚本也要一块打包并进行分类 5.document目录下的readme.txt放在压缩包的根目录下,其他的还放在这个目录下 6.打的jar包去掉不需要的目录(文

  • Maven打jar包的三种方式(小结)

    不包含依赖jar包 该方法打包的jar,不包含依赖的jar包,也没有指定入口类. <build> <plugins> <plugin> <!-- 指定项目编译时的java版本和编码方式 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.

  • 使用maven如何将项目中的test代码打包进jar中

    目录 maven将项目的test代码打包进jar中 项目结构如下 需求 三步 maven打包跳过test 在pom.xml文件中添加插件 使用mvn命令带附加参数 maven将项目的test代码打包进jar中 项目结构如下 …/src/main/java/package/** <– application code …/src/test/java/package/** <– test code 需求 test中有一个包含main方法的主类TestMain.java,将main.test.全部依

  • maven 打包项目的几种方式

    目录 方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 方法二:使用maven-assembly-plugin插件打包 方法三:使用maven-shade-plugin插件打包 Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in xxx.jar"(没有设置Main-Class).ClassNotF

  • 使用Maven打包时包含资源文件和源码到jar的方法

    目录 Maven打包时包含资源文件和源码到jar 在<build>中添加以下内容 意义如下 maven打包时包含源码的问题 Maven打包时包含资源文件和源码到jar 在使用Maven打包时,我们发现最终打包之后jar中只有已经编译完成的代码class,资源文件都没了,如果有资源文件需要打包进jar的话,直接打包jar无法正常工作. 其实,在pom.xml中配置一下<build>节点即可实现把资源打包进来的操作. 在<build>中添加以下内容 <resource

  • 浅析Python打包时包含静态文件处理方法

    使用场景 已搭建了PyPI私有库,上传公共库包含静态文件,如需要使用sql静态文件初始化数据库. 打包python包,给其他人使用,但项目中包含静态文件,如html. 解决步骤 解决静态文件读取问题 解决静态文件打包问题 环境 Python3.8 PyCharm 2020 demo项目为例 创建项目 展示静态文件读取问题 解决方案 展示静态文件打包问题 解决方案 1. 创建项目 创建一个demo项目(text-setup),目录如下 test-setup demo \_\_init\_\_.py

  • maven打包zip包含bin下启动脚本的完整代码

    maven打包zip包含bin下启动脚本,这个脚本小编在idea上测试有效: pom.xml打包 <build> <sourceDirectory>src/main/scala</sourceDirectory> <testSourceDirectory>src/test/scala</testSourceDirectory> <resources> <resource> <directory>src/main

  • webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)

    最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改config目录下的index.js文件 将其中build的配置项assetsPublicPath进行修改,改为 目的是将资源文件的引入路径,改为相对地址(相对index.html) 二.此时html中的js.css.img引入均没有问题,但是css中的background-image还是报404 此

  • 关于maven打包时的报错: Return code is: 501 , ReasonPhrase:HTTPS Required

    今天使用jenkins构建时,报以下错误 [ERROR] Failed to execute goal on project saas20: Could not resolve dependencies for project com.ipower365.saas:saas20:war:0.0.1-SNAPSHOT: Failed to collect dependencies at com.ipower365.saas:messageserviceimpl:jar:0.0.1-SNAPSHOT

  • 在ASP.NET 2.0中操作数据之五十四:添加新记录时包含一个文件上传选项

    导言: 在前面2节教程,我们探讨了如何使用FileUpload控件从客户端向服务器上传文件,以及如何在数据Web控件里显示二进制数据. 在本节,我们将创建一个web页面以添加新的种类.除了为类的name和description属性添加TextBoxes控件外,我们还要在页面上添加2个FileUpload控件--一个用来上传新类的图片,另一个用来上传类的小说明册子.上传的图片将直接存储在新记录的Picture列.与此相反,小册子将存储在~/Brochures 文件夹,同时将文件路径存储在新记录的B

  • Springboot基于maven打包分离lib及resource

    之前在部署Spring Boot项目时,经常因为只修改了一小处代码.或者只更新了某个jar包,但是却需要将整个项目重新打包.上传.部署,整个包一般都会达到40-60M,每次都重复这个操作真的很耗费时间,因此就想是否能够将依赖lib与项目代码分离出来,每次部署只需要发布代码即可. 项目发版,为了应对更新多变的依赖jar包,实现增量或替换依赖jar包,越来越多的企业实现源代码和依赖jar包和依赖配置分离,更好的应对复杂多变的现场和生产环境,使用maven打包配置如下: <build> <pl

  • maven 打包时间戳问题

    maven 打包时,可以生成时间戳属性,利用该属性来组装包名. <version>5.0.${build.time}B</version> <properties> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> </properties> 对资源文件开启 filtering 功能,资源文件中的 POM 变量在打包过程中会被自动替换

  • Maven打包跳过测试的三种方法

    使用Maven打包的时候,可能会因为单元测试打包失败,这时候就需要跳过单元测试. Maven跳过单元测试有三种方法. 一.命令行方式跳过测试 我们可以用两种命令来跳过测试 mvn clean install -DskipTests mvn clean install -Dmaven.test.skip=true - DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 - Dmaven.test.skip=true,不执行测试用

  • Maven打包跳过测试的实现方法

    使用Maven打包的时候,可能会因为单元测试打包失败,这时候就需要跳过单元测试. Maven跳过单元测试有三种方法. 一.命令行方式跳过测试 我们可以用两种命令来跳过测试 mvn clean install -DskipTests mvn clean install -Dmaven.test.skip=true - DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 - Dmaven.test.skip=true,不执行测试用

随机推荐