背景:
项目在一个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
- <plugin>
-
<groupId>org.apache.maven.plugins</groupId>
-
<artifactId>maven-jar-plugin</artifactId>
-
<version>2.3.1</version>
-
<executions>
-
<execution>
-
<id>my-jar</id>
-
<phase>package</phase>
-
<goals>
-
<goal>jar</goal>
-
</goals>
-
<configuration>
-
<classifier>api</classifier>
-
</configuration>
-
</execution>
-
</executions>
-
</plugin>
-
-
-
-
其中要注意的是,声明 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-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-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
**Maven 插件** 如`spring-boot-maven-plugin`能够实现将Spring Boot应用打包为可执行的Jar或War文件,并且可以配置不同的参数来控制构建行为。例如,指定主类、排除某些依赖等。 ##### 2. 使用Maven安装本地Jar包 ...
今天,我们将介绍如何使用Maven同时打包web项目时同时打包为war和jar文件的方法。 首先,我们需要在pom.xml文件中指定war的打包方式,例如: <packaging>war 这将告诉Maven,默认情况下,打包成war文件。 其次,...
`mvn install`将编译项目,运行测试,并将最终的JAR或WAR文件安装到本地仓库。 ### Maven与JDK版本兼容性 Maven 3.5.2是支持JDK 1.8及更高版本的。这意味着开发者可以利用此版本的Maven来构建那些基于Java 8及以上...
本文将对Maven的jar包和war包进行详细的比较,并介绍如何使用Maven进行打包。 一、Maven的jar包 Maven的jar包是一种常见的打包格式,用于将Java类、资源文件和普通文件打包到一个文件中。在Maven中,jar文件包含...
在Java开发中,Maven仓库是一个至关重要的组成部分,它存储了大量的jar包,这些包包含了各种预编译的类和库,使得开发者无需从零开始构建项目。Maven仓库分为本地仓库、中央仓库和远程仓库,其中"maven-repository...
"Kettle Maven jar"标签提示我们,这里涉及的是Kettle与Maven结合使用时所需的特定jar文件。 在压缩包"Kettle"中,很可能包含了Kettle运行和构建过程中必需的jar文件。这些文件可能包括Kettle的核心库、数据库连接...
使用Maven引入相关jar包" 的主题中,我们将深入探讨如何在Java项目中利用Maven管理依赖,特别是针对SSH(Struts2、Spring、Hibernate)框架的应用。SSH是Java开发中广泛使用的三大开源框架,它们各自负责Web层、...
1. **构建与打包**:Maven 插件支持多种打包类型,如 JAR、WAR 和 EAR 等。在 Eclipse 中,只需在 POM.xml 文件中指定 `<packaging>` 标签为 "jar",Maven 就会将项目打包成 JAR 文件。JAR(Java ARchive)文件是 ...
这是Maven生命周期中的一个阶段,它的主要作用是将项目打包(通常是JAR或WAR)并将其安装到本地Maven仓库。当我们在项目中添加依赖时,Maven会首先在本地仓库查找,如果没有,才会去远程仓库搜索。因此,如果我们有...
maven打包,指定入口类的jar包,具体的pom配置为: <groupId>org.apache.maven.plugins <artifactId>maven-shade-plugin <version>3.1.0 <phase>package <goal>shade implementation="org....
5. **插件**: Maven使用插件执行特定任务,如编译代码、运行测试、打包成JAR或WAR等。 6. **构建过程**: Maven使用`mvn clean compile`等命令执行构建过程。这些命令对应生命周期中的阶段。 ** Maven 的常用命令 *...
4. **生命周期(Lifecycle)**:Maven有一套预定义的构建生命周期,包括clean、compile、test、package、install和deploy等阶段,开发者可以根据需要执行特定阶段。 5. **插件(Plugins)**:Maven通过插件执行各种...
1. **maven install**:执行`install`命令,Maven会首先进行编译、测试(除非配置了跳过测试)和打包操作,然后将生成的工件(jar或war)安装到本地仓库。这意味着其他项目可以立即引用这个新版本的工件,而无需等待...
2. 运行Maven命令:在命令行中,使用`mvn install`或`mvn dependency:get`命令,Maven会根据`pom.xml`中的配置,自动从中央仓库或其他配置的远程仓库下载相应的jar包到本地仓库。 3. 使用下载的jar包:下载的jar包会...
标题 "spring 扫描jar maven 打包" 涉及的是在Java开发中,如何使用Spring框架和Maven工具来构建并打包一个项目,其中包含Spring对jar包的扫描以及Maven的打包流程。这里我们将深入探讨这两个关键概念。 1. **...
**正文** Maven框架是Java开发中的一个项目管理和构建工具,由Apache软件基金会开发并维护。它通过使用一种标准化的项目对象模型(Project Object Model...正确理解和使用Maven,能显著提高开发效率和项目的可维护性。