问题提出
pom.xml中的<packaging>是该项目的打包方式,Maven预设的几种打包方式分别是:
jar/war/ejb/ejb3/rar;打包方式会与Lifecycle做一个绑定,mvn会根据打包的类型来调用不同的插件来完成打包的工作。
比如jar包就会调用maven-jar-plugin的jar任务来打包,war会调用war:war来完成打包
几种默认的Lifecycle绑定(ejb/jar/rar/war):
process-resources |
resources:resources |
compile |
compiler:compile |
process-test-resources |
resources:testResource |
test-compile |
compiler:testCompiler |
package |
ejb:ejb jar:jar rar:rar war:war |
install |
install:install |
deploy |
deploy:deploy
|
但是,我需要自己定义一种打包方式,car包,这种方式是war包的一个中间阶段,这种包除了不包含WEB-INF/lib和web.xml外和war包格式一样的。
几个不同的car可以合并成为同一个war包,这样就可以解决在一个ear包中,导致同一个jar在不同的war中反复被引用的情况。
Maven中自定义Package 类型并绑定Lifecyle的过程是:
- 创建一个Maven 插件工程,package 类型为maven-plugin
- 请参照《Maven Definitive》的关于自定义插件的章节,定义自定义插件的Mojo Goal。
- 在src/main/resources 的目录下,创建文件夹 META-INF/plexus,并在该文件夹下加入文件 components.xml。
- components.xml向Maven的内在容器Plexus Container描述了插件的基本信息。这里有一个Sample,来自maven-magma-plugin的components.xml.
- 在这个文件中,将magma替换为你自定义的打包类型。
- 将你自己写的插件deploy到Repository中,如果要引用自定义打包类型。pom.xml文件需要注意的地方是:
packaging应该自定义的打包类型的名字。
而在plugin的配置的时候,要将extensions设置为true,比如:
<plugin>
<groupId>org.apache.magma.tools</groupId>
<artifactId>maven-magma-plugin</artifactId>
<extensions>true</extensions>
</plugin>
感谢simoneg@apache.org的热情帮助解决我的问题,请大家有关于Maven问题在users@maven.apache.org中提出,这里有很多的热心人。
分享到:
相关推荐
在Maven2中建议使用自定义的plugin来封装这些内容。 如果仍期望能够使用类似maven.xml的功能,如,请参考Inserting non-standard build steps using preGoals and postGoals。 在Maven2中,配置使用settings.xml,...
通过在POM中指定依赖项的坐标,Maven可以自动解析依赖关系,并从中央仓库或自定义仓库中下载所需的JAR包。 约定优于配置: Maven遵循“约定优于配置”的原则,即在大多数情况下,它会根据标准的项目结构和约定来...
Flatten Maven插件 生产发布 开发发布 安装 相似的插件 插件功能 取代公开的身份 解决依赖版本范围 根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.... mvn clean package -P flatten < profile>
Datavines 是一站式开源数据可观测性平台,提供元数据管理、数据概览报告、数据质量管理...单表自定义SQL检查类型 跨表准确性检查类型 两表值比对检查类型 支持配置定时任务进行定时检查 支持配置 SLA 用于检查结果告警
package composite component into jar maven3 jsf2 UBuntu glassfishv3.0.1 Emacs JDEE
项目:maven-hadoop-java-wordcount-template 这是一个 ...编译你的项目要编译项目,请使用 maven 命令 mvn clean package运行您的应用程序使用 Hadoop 在你的 shell 中 hadoop jar your-hadoop-application.jar arg0
取消以上代码的注释,将jetty和undertow的引用注释掉,将packaging从jar改为war然后运行maven package命令,将war包放在tomcat/webapps目录下 二、Jetty部署 <groupId>com.jfinal</groupId> <artifactId>jetty-...
Maven 用例编译/测试/安装mvn clean install运行(通过 Maven) mvn exec:java构建可执行文件mvn clean package运行编译包 # Assumption is you've created the package alreadyjava -jar target/spring-shell-...
maven { url "https://jitpack.io" } } dependencies { compile 'com.github.czy1121:update:1.1.1' } Usage 基本用法 默认情况下,查询请求会需要三个参数: 包名(package), 版本号(version), 渠道(channel) ...
身份验证器使用WSO2 IS的PKI的自定义身份验证器在OSX上安装 cd ~/Documentsgit clone https://github.com/vasilyev-alexander/pki-authenticator.gitcd pki-authenticatorsudo port install maven2mvn package来源:...
像在任何其他 Maven 项目中一样,将自定义 Solr 组件添加到src/main/java 。 这些将被编译到war文件中。 部署 如果要部署到 servlet 容器,请运行 mvn package 在target/创建一个 war 文件 在 servlet 容器中运行时...
如果您使用Custom WAR Packager 1.x,请参阅。 自定义WAR打包程序(CWP)允许使用YAML规范构建可即时发布的Jenkins程序包。 该工具可以生成Docker映像,WAR文件和映像(又名Jenkins主映像)。 这些捆绑软件可能包括...
输入项目根目录并使用[Apache Maven]( )进行构建: mvn clean package 构建生成可执行的uber-JAR文件target/example-1.0-SNAPSHOT.jar ,其中包含可执行的应用程序类org.jpmml.model.Main 。 用法 通过指定PMML...
在项目目录中,运行mvn clean install content-package:install生成捆绑包和内容包并安装到CQ实例。 与VLT一起使用 要将vlt与此项目一起使用,请先如上所述将程序包构建并安装到本地CQ实例。 然后cd到src/main/...
车辆API REST API,用于维护车辆数据并提供车辆详细信息(包括价格和地址)的完整视图。产品特点REST API探索主要... $ mvn clean package$ java -jar target/vehicles-api-0.0.1-SNAPSHOT.jar将其作为Maven项目导入到
从项目目录中,运行mvn clean install content-package:install以构建捆绑包和内容包并安装到 CQ 实例。 与 VLT 一起使用 要在这个项目中使用 vlt,首先如上所述构建并安装包到本地 CQ 实例。 然后 cd 到src/main/...
一些自定义的 presto 功能 建造 需要 Java 8 Update 60 或更高版本 (8u60+) Maven 3.3.9+(用于构建) cd ${project_home} mvn clean package 如果你想跳过单元测试,请运行: mvn clean package -DskipTests 它将在...
推荐的构建该项目的方法是使用随附的Maven包装器生成Docker映像,然后可以运行该映像以启动bot。 在macOS或Linux上,以下命令将通过Shell脚本调用Maven,构建项目并使用本地可用的Docker实例构建Docker映像: ./...
第 2 步:打包插件:转到plugin-src目录并运行mvn clean package 第 3 步:将插件 jar 复制到plugin-app/plugins插件存储库。 您可以运行命令cp -v plugin-src/*/target/*.jar plugin-app/plugins/ 第 4 步:运行...
java实现自定义目标检测源码JPlag - 检测软件抄袭 下载安装 从源头构建 从此存储库下载或克隆代码。 从存储库的根目录运行mvn clean install以安装所有子模块。 您将在相应的target目录中找到 JAR。 在jplag目录中...