`

如何用 maven 同时 install jar 和 war

    博客分类:
  • java
 
阅读更多

背景:

项目在一个super pom下,有多个平行module,在各级依赖中,有一个module 在 pom 中定义 package war,但是开发阶段,只需要其中的jar包来使用。如果一直使用其 war 包来开发调试,maven overlay 会占用较多时间。

于是新的需求就是:将这个module 同时打包 jar 和 war 并 intall 到本地 repository 中。开发阶段就用jar,部署用war。

 

解决思路

使用 maven-jar-plugin ,定义在 phase package 阶段同步打 jar 包;

然后在 maven install 时,maven 会将这个 module 的 jar、war、ear、pom 等install到本地repository (此动作是自动完成,有几个就install 几个,无需配置

 

具体操作:

在pom中加入 maven-jar-plugin 2.3.1

 

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-jar-plugin</artifactId>
  4. <version>2.3.1</version>
  5. <executions>
  6. <execution>
  7. <id>my-jar</id>
  8. <phase>package</phase>
  9. <goals>
  10. <goal>jar</goal>
  11. </goals>
  12. <configuration>
  13. <classifier>api</classifier>
  14. </configuration>
  15. </execution>
  16. </executions>
  17. </plugin>
  18.  

  19.  

  20. 其中要注意的是,声明 classifier 为任何你需要的字符。


     

    因为这样可以避免一个问题:

    如果在 pom 中定义 package 为 war,

    运行 maven package 后,在项目 target 目录下成功产生 XX.jar 和 XX.war ,

    但运行 maven install,却只把 XX.jar 安装到 repositoy 中的 XX.war,其中内容仅是 jar 包内容。

    而XX.war 就不install 到 repositoy 了。

     

    加入 classifier 后产生: XX-api.jar 和 XX.war,

    那么maven install 会将这两个文件同时安装到本地 repository 中,不会产生上述问题。

 

 

 

引用:

 

<dependency>
            <groupId>com.my</groupId>
            <artifactId>my-jar</artifactId>
            <classifier>api</classifier>
            <version>${my.version}</version>
            <type>jar</type>
        </dependency>

 

 

后记:

同样的道理,如果项目定义 package jar,同时需要打包 jar 和 war,应该也可以搭配使用 maven-war-plugin 来达成。

分享到:
评论

相关推荐

    maven打包 maven打jar包详细步骤

    在`maven-war-plugin`和`maven-install-plugin`中,`maven-war-plugin`用于将Web应用打包成WAR文件,适合于Web服务器部署。而`maven-install-plugin`则负责将打包后的文件(无论是JAR还是WAR)放入本地Maven仓库,...

    maven-jar-plugin-3.1.1.jar

    maven-jar-plugin-3.1.1.jar

    maven jar包

    maven-aether-provider-3.2.1-sources.jar maven-antrun-plugin-1.3.jar maven-archiver-2.2.jar maven-artifact-3.2.1-sources.jar maven-assembly-plugin-2.2-beta-5.jar ...maven-war-plugin-2.3.jar

    Springboot 打Jar包,Maven完美解决本地Jar包自动打入Springboot Jar包中

    **Maven 插件** 如`spring-boot-maven-plugin`能够实现将Spring Boot应用打包为可执行的Jar或War文件,并且可以配置不同的参数来控制构建行为。例如,指定主类、排除某些依赖等。 ##### 2. 使用Maven安装本地Jar包 ...

    maven打包web项目时同时打包为war和jar文件的方法

    今天,我们将介绍如何使用Maven同时打包web项目时同时打包为war和jar文件的方法。 首先,我们需要在pom.xml文件中指定war的打包方式,例如: &lt;packaging&gt;war 这将告诉Maven,默认情况下,打包成war文件。 其次,...

    Maven核心程序jar包

    `mvn install`将编译项目,运行测试,并将最终的JAR或WAR文件安装到本地仓库。 ### Maven与JDK版本兼容性 Maven 3.5.2是支持JDK 1.8及更高版本的。这意味着开发者可以利用此版本的Maven来构建那些基于Java 8及以上...

    浅谈maven的jar包和war包区别 以及打包方法

    本文将对Maven的jar包和war包进行详细的比较,并介绍如何使用Maven进行打包。 一、Maven的jar包 Maven的jar包是一种常见的打包格式,用于将Java类、资源文件和普通文件打包到一个文件中。在Maven中,jar文件包含...

    maven仓库 jar包

    在Java开发中,Maven仓库是一个至关重要的组成部分,它存储了大量的jar包,这些包包含了各种预编译的类和库,使得开发者无需从零开始构建项目。Maven仓库分为本地仓库、中央仓库和远程仓库,其中"maven-repository...

    Maven 构建 Kettle 时所需的部分jar包

    "Kettle Maven jar"标签提示我们,这里涉及的是Kettle与Maven结合使用时所需的特定jar文件。 在压缩包"Kettle"中,很可能包含了Kettle运行和构建过程中必需的jar文件。这些文件可能包括Kettle的核心库、数据库连接...

    [SSH+Maven+Bootstrap视频教程]_10. 使用Maven引入相关jar包.zip

    使用Maven引入相关jar包" 的主题中,我们将深入探讨如何在Java项目中利用Maven管理依赖,特别是针对SSH(Struts2、Spring、Hibernate)框架的应用。SSH是Java开发中广泛使用的三大开源框架,它们各自负责Web层、...

    maven插件jar

    1. **构建与打包**:Maven 插件支持多种打包类型,如 JAR、WAR 和 EAR 等。在 Eclipse 中,只需在 POM.xml 文件中指定 `&lt;packaging&gt;` 标签为 "jar",Maven 就会将项目打包成 JAR 文件。JAR(Java ARchive)文件是 ...

    maven 安装jar的方法

    这是Maven生命周期中的一个阶段,它的主要作用是将项目打包(通常是JAR或WAR)并将其安装到本地Maven仓库。当我们在项目中添加依赖时,Maven会首先在本地仓库查找,如果没有,才会去远程仓库搜索。因此,如果我们有...

    maven-shade-plugin-3.1.0.jar

    maven打包,指定入口类的jar包,具体的pom配置为: &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-shade-plugin &lt;version&gt;3.1.0 &lt;phase&gt;package &lt;goal&gt;shade implementation="org....

    安装的maven3.6.1

    5. **插件**: Maven使用插件执行特定任务,如编译代码、运行测试、打包成JAR或WAR等。 6. **构建过程**: Maven使用`mvn clean compile`等命令执行构建过程。这些命令对应生命周期中的阶段。 ** Maven 的常用命令 *...

    maven项目开发的maven3.3.9使用包

    4. **生命周期(Lifecycle)**:Maven有一套预定义的构建生命周期,包括clean、compile、test、package、install和deploy等阶段,开发者可以根据需要执行特定阶段。 5. **插件(Plugins)**:Maven通过插件执行各种...

    详解maven的install的作用

    1. **maven install**:执行`install`命令,Maven会首先进行编译、测试(除非配置了跳过测试)和打包操作,然后将生成的工件(jar或war)安装到本地仓库。这意味着其他项目可以立即引用这个新版本的工件,而无需等待...

    maven脚本快捷下载各种jar文件

    2. 运行Maven命令:在命令行中,使用`mvn install`或`mvn dependency:get`命令,Maven会根据`pom.xml`中的配置,自动从中央仓库或其他配置的远程仓库下载相应的jar包到本地仓库。 3. 使用下载的jar包:下载的jar包会...

    spring 扫描jar maven 打包

    标题 "spring 扫描jar maven 打包" 涉及的是在Java开发中,如何使用Spring框架和Maven工具来构建并打包一个项目,其中包含Spring对jar包的扫描以及Maven的打包流程。这里我们将深入探讨这两个关键概念。 1. **...

    maven框架,导jar包

    **正文** Maven框架是Java开发中的一个项目管理和构建工具,由Apache软件基金会开发并维护。它通过使用一种标准化的项目对象模型(Project Object Model...正确理解和使用Maven,能显著提高开发效率和项目的可维护性。

Global site tag (gtag.js) - Google Analytics