`

自定义Maven Package 类型

阅读更多

 问题提出

 

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的过程是:

 

  1. 创建一个Maven 插件工程,package 类型为maven-plugin
  2. 请参照《Maven Definitive》的关于自定义插件的章节,定义自定义插件的Mojo Goal。
  3. 在src/main/resources 的目录下,创建文件夹 META-INF/plexus,并在该文件夹下加入文件 components.xml。
  4. components.xml向Maven的内在容器Plexus Container描述了插件的基本信息。这里有一个Sample,来自maven-magma-plugin的components.xml. 
  5. 在这个文件中,将magma替换为你自定义的打包类型。
  6. 将你自己写的插件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中提出,这里有很多的热心人。

2
1
分享到:
评论

相关推荐

    maven 自定义插件小示例

    本文将深入探讨“Maven自定义插件小示例”,以帮助开发者更好地理解和利用Maven的强大功能。 Maven插件是Maven生态系统中的一个重要组成部分,它们提供了各种各样的功能,如编译、测试、打包、部署等。有时,标准...

    自定义maven工程 mydepot,代码框架

    【自定义maven工程 mydepot】是一个专为Java开发者设计的代码框架,它提供了一种规范化的项目结构,便于代码管理和团队协作。Maven是一个强大的项目管理工具,它可以帮助开发者自动化构建、依赖管理和项目信息管理。...

    在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插

    我们将以开发和发布一个名为`test-mvn-plugin`的自定义Maven插件为例进行讲解。 首先,你需要安装一个Maven仓库管理器,如Nexus或Artifactory。这里以Nexus为例,因为它提供了开源版本且功能强大。访问Nexus的官方...

    自定义标签(maven)

    运行`mvn package`命令,Maven会生成一个包含自定义标签库的WAR文件。在其他Java EE应用中,只需将此WAR文件放入`WEB-INF/lib`目录,即可使用自定义标签。 总之,自定义标签是Java EE开发中的一个重要工具,它能...

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

    总的来说,Maven Assembly插件为开发者提供了灵活的打包机制,可以根据项目需求定制不同类型的包。通过学习和掌握这一技能,我们可以更高效地管理和分发我们的Java项目,无论是简单的jar包还是复杂的包含源代码、...

    apache-maven-3.5.2

    如果需要自定义Maven的行为,如设置代理服务器或指定本地仓库位置,可以在用户主目录下创建`.m2`文件夹,并在其中创建`settings.xml`文件。 总的来说,Apache Maven 3.5.2是Java开发中的重要工具,它简化了项目...

    maven.rar apache-maven-3.5.4

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、...提供的二进制和源码文件为开发者提供了安装、学习和自定义Maven的基础。

    maven压缩包,apache-maven-3.3.9 ,apache-maven-3.5.3,apache-maven-3.6.1

    在实际使用中,还可以自定义Maven配置文件(settings.xml),以适应特定的仓库设置、代理配置和本地库路径等。同时,学习如何编写POM.xml文件,理解和运用Maven的坐标系统,是掌握Maven的关键。

    apache-maven.zip

    2. **conf**:存放Maven的配置文件,如`settings.xml`,该文件允许用户自定义Maven的行为,比如指定本地仓库位置、远程仓库以及镜像设置。 3. **lib**:包含Maven运行所需的库文件,包括各种jar包,这些库支持Maven...

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    3. **构建项目**: 使用`mvn compile`进行编译,`mvn test`运行测试,`mvn package`打包项目,`mvn install`将项目安装到本地仓库。 4. **部署项目**: 使用`mvn deploy`可以将项目部署到远程仓库,供其他项目使用。 ...

    如何提高Maven多模块项目编译速度.docx

    如上述所示,可以定义一个profile来指定JDK的路径,以及自定义的远程仓库地址,这有助于减少从默认中央仓库下载依赖的时间。此外,可以调整更新策略,如将`updatePolicy`设为`never`,避免不必要的依赖检查。 6. **...

    maven打包 maven打jar包详细步骤

    最后,`package`阶段会根据项目的打包类型(如JAR或WAR)生成相应的文件,存放在`target`目录下。 3. `mvn install`:此命令在`package`之后,将`target`目录下的打包文件安装到本地Maven仓库。这使得其他本地项目...

    Maven3.3.9安装包

    可能包括如何自定义Maven的构建过程、如何处理复杂的依赖关系、如何配置插件等实用内容。 总之,Maven3.3.9作为一款强大的Java项目管理工具,通过其标准化的项目结构、依赖管理和自动化构建能力,极大地提高了开发...

    apache-maven-3.5.2-win64.zip

    这个文件允许用户自定义Maven的行为,比如设置本地仓库路径、远程仓库镜像、代理服务器等。 3. **lib目录**:包含Maven运行所需的库文件,包括各种依赖的JAR包。这些库支持Maven的各种功能,如解析POM、处理插件、...

    Maven仓库apache-maven-3.2.5

    Maven的生命周期是其核心概念之一,它定义了一系列构建阶段,如编译(compile)、测试(test)、打包(package)、验证(validate)、安装(install)和部署(deploy)。每个阶段由一系列插件目标(plugin goals)...

    Mac的maven安装包apache-maven-3.6.3.zip

    打开终端,编辑`~/.bash_profile`或`~/.zshrc`文件(根据你的Shell类型),添加以下内容: ``` export M2_HOME=/path/to/apache-maven-3.6.3 export PATH=$M2_HOME/bin:$PATH ``` 其中`/path/to/`应替换为实际...

    maven API maven API

    Maven API允许开发者在代码中调用插件,自定义构建过程。 4. **依赖管理 (Dependency Management)**: Maven API自动处理项目的依赖关系,确保所有依赖项都按照正确的版本和路径引入。通过声明依赖,Maven会自动下载...

    apache-maven-3.9.6版本-内含安装说明-用于Mac系统

    在日常开发中,你还可以自定义Maven的配置,比如调整依赖的版本,设置编译源代码的JDK版本,或者创建自己的插件执行特定任务。Maven的可扩展性使其成为Java开发者的得力助手。 总之,Apache Maven 3.9.6为Mac用户...

    apache-maven-3.6.1 安装包

    7. **Maven的设置文件**:用户可以通过`settings.xml`文件自定义Maven的行为,如设置镜像(mirrors)以提高依赖下载速度,配置本地或远程仓库路径,以及定义全局的用户名和密码。 8. **多模块项目**:Maven支持多...

    Maven打包,指定classes路径

    然而,如果我们希望在打包过程中直接将类文件放入`WebContent/WEB-INF/classes`,我们需要自定义Maven的配置。 要实现这一目标,我们需要修改项目的`pom.xml`文件,具体操作如下: 1. **配置`&lt;build&gt;`部分**:在`...

Global site tag (gtag.js) - Google Analytics