`

mvn assembly package jar 无法运行

阅读更多

       项目中要跑了一个jar工程,每天做一次数据结算。最开始我用的maven-assembly-plugin 打包,发现没什么问题。因为工程中引入了spring,有一处代码需要添加事务,所以就在application中引入了tx。再次打包,运行,提示tx schema 无法加载。百度了一下,因为spring  jar中包含了meta/spring.schema 和 spring.handlers,工程启动会通过存在的配置加载命名空间,但是和我需要的却不是一个版本,所以就会找不到对应的命名空间。 

      又是再次百度,找到了maven-shade-plugin ,到官网看了一下它的使用方式,mvn package 就可以了。

看了一下example ,发现竟然有这样一段配置

    Some jars contain additional resources (such as properties files) that have the same file name. To avoid overwriting, you can opt to merge them by appending their content into one file. One good example for this is when aggregating both the spring-context and plexus-spring jars. Both of them have the META-INF/spring.handlers file which is used by Spring to handle XML schema namespaces. You can merge the contents of all the files with that specific name using the AppendingTransformer as shown below:

 

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <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>
  ...
</project>

   
    英文注释 和我百度的解释类似 ,直接copy到了工程pom.xml 中 mvn package 然后java -jar  *.jar  运行正常
   

分享到:
评论

相关推荐

    多项目管理编译运行(package、jar)的程序示例,包括Java项目源代码、编译和运行的脚本,全部打包在一起。可直接编译运行

    在Maven中,使用`mvn package`命令,会生成一个包含所有依赖的可执行JAR,或者使用`mvn assembly:assembly`或`mvn shade:shade`插件创建一个"fat JAR",其中包含所有依赖。 5. **运行JAR文件**: 使用`java -jar`...

    Maven发布Jar包中文乱码解决方法

    `mvn clean package -Dfile.encoding=UTF-8` 3. 在项目的 resource 文件夹下添加一个资源文件 encoding.properties,内容如下: `encoding=UTF-8` 三、详细说明 在 Maven 中,编译和打包过程中使用的字符集是...

    java打包为jar

    在Java开发过程中,将项目打包成可执行的JAR(Java Archive)文件是常见的操作,这使得代码可以方便地分发、部署和运行。本文将详细介绍如何将Java工程打包成可执行的JAR文件。 首先,确保你有一个完整的Java工程,...

    maven打可执行JAR包

    2. **执行构建**:运行`mvn package`命令,这将创建一个不含依赖的JAR和一个包含所有依赖的`dependency`目录。 3. **运行JAR**:由于依赖被单独打包,你需要确保运行JAR时,所有依赖的JAR都在`dependency/`目录下。...

    如何打jar包的例子(可运行,有说明文档)

    这样,只需运行`mvn package`或`gradle jar`,就能自动创建包含Manifest的可运行JAR。 6. **包含依赖**:如果项目依赖其他外部库,可以使用`maven-assembly-plugin`或`shadow`插件(Gradle)来创建一个“fat”或...

    MAVEN打可运行jar包

    在完成上述配置后,只需在命令行中执行`mvn clean package`,Maven就会根据你选择的插件生成一个包含所有依赖的可执行jar包。如果你使用的是IDE如IntelliJ IDEA或Eclipse,也可以通过内置的Maven支持来执行这个命令...

    maven常用命令.docx

    而`mvn package`会生成项目本身的jar和一个`-jar-with-dependencies.jar`,后者包含了所有依赖的jar包。 这两种配置方式适用于不同场景,第一种适用于需要一个独立运行的可执行jar,第二种则更便于开发环境中的构建...

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

    在Java开发中,Maven是一个强大...在实际开发中,确保Maven的POM.xml文件配置正确,以及在运行`mvn clean package`命令时,Maven能够正确地构建和打包项目。这不仅简化了开发流程,还提高了项目的可维护性和可部署性。

    maven assembly 插件 代码实现

    mvn clean package assembly:single ``` 这将会在`target`目录下生成指定格式的归档文件。 **5. 应用场景** Maven Assembly插件常用于创建可分发的软件包,比如包含所有依赖的JAR(fat JAR),或者创建一个包含...

    Assembly插件

    4. **执行打包命令**: 运行Maven的`mvn package`或Gradle的`gradle assemble`命令,Assembly插件会根据assembly.xml的配置打包项目。 **5. 自定义打包规则** Assembly插件的强大之处在于可以通过XML配置进行高度...

    mybatis配置文件生成jar包

    如果JAR文件不包含运行所需的全部依赖,你可能需要使用fat JAR插件(如Maven的`maven-assembly-plugin`或Gradle的`shadow`插件)来创建一个包含所有依赖的单一可执行JAR。 总结,生成MyBatis配置文件的JAR包涉及到...

    sample_java_spring_app:使用 Spring 的初始 Java 项目

    # Initial Java project with Spring 带有 Spring 框架和 Spring IoC 容器的 Java 项目(依赖注入)。 克隆仓库 ...$ cd sample_java_spring_app Maven 任务 ... $ mvn assembly:assembly -DdescriptorId=jar-

    关于创建可执行的jar文件

    - Maven:运行`mvn clean package`命令,将会在`target`目录下生成一个JAR文件。 - Gradle:运行`gradle build`,JAR文件将在`build/libs`目录下。 5. **运行JAR**: 创建了可执行JAR后,可以通过以下命令运行它...

    使用Maven assembly打多个自定义包及War包简介

    执行`mvn package`命令后,Maven会根据配置生成对应的包文件。如果想要同时生成多个包,可以在`pom.xml`中添加多个`&lt;execution&gt;`标签,每个标签对应一个不同的assembly描述符。 `.classpath`和`.project`文件是...

    java的jar包

    Maven的`mvn package`命令会生成包含所有依赖的fat JAR(也称为uber JAR),而Gradle的`shadowJar`或`assembly`插件同样提供类似功能。 4. **运行JAR**: 可以通过以下命令运行包含主类的JAR文件: ``` java -...

    如何使用Fat Jar Plug-in打包java可执行程序

    在完成pom.xml的配置后,运行`mvn clean package`命令,Maven会自动构建Fat Jar。生成的JAR文件位于`target`目录下,名称类似于`your-project-name-1.0-SNAPSHOT-jar-with-dependencies.jar`。 打包完成后,你可以...

    assembly plugin打包

    4. 执行打包:在命令行中,通过执行`mvn assembly:single`命令来触发打包过程,Maven会根据你在`pom.xml`和`assembly.xml`中的配置来创建归档文件。 标签中提到的“源码”可能意味着在打包过程中,开发者可以选择...

    SpringBoot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip

    执行`mvn package -Pdev`命令时,将会根据`dev.xml`生成一个名为`myapp-dev.tar.gz`的打包文件。 对于生产环境,同样可以在`pom.xml`中添加另一个执行配置,引用`prod.xml`,并替换`finalName`为生产环境的标识。 ...

    打包插件fatjar

    - 执行构建命令,例如Maven的`mvn package`,将会生成包含所有依赖的fat JAR文件。 4. **注意事项** - 尽管fatjar简化了部署流程,但大体积的JAR可能增加分发和下载的时间。 - 同名类冲突:如果多个依赖库中有...

    maven打包dubbo服务接口(maven-assembly-plugin)

    `maven-assembly-plugin`主要用于创建自定义的归档文件,如JAR、WAR或ZIP,通常在`package`阶段运行。 要打包Dubbo服务接口,我们需要在项目的`pom.xml`配置文件中引入`maven-assembly-plugin`。下面是一个基本的...

Global site tag (gtag.js) - Google Analytics