更新时间:2022-03-28 09:30:22 来源:动力节点 浏览4797次
使用maven,制作jar文件、war文件、ear文件等非常简单。Maven 支持非常大的内置打包列表。此外,它可以在 maven 中定义用户定义的包装。让我们在这篇文章中了解有关 Maven 打包的所有信息。
Maven 支持构建打包,如jar, ear, war...等。在 Maven 中,构建什么是由打包属性决定的。它是在<packaging></packaging>标签之间定义的。如果 pom.xml 中没有打包标签,那么默认情况下它会将打包类型视为 jar。
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.lici.maven</groupId>
<artifactId>maven-packaging</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
</project>
让我们看看maven核心支持哪些封装。
jar:这是默认的打包方式,这个打包方式是用来构建jar文件的。
war:这个包装有助于创建一个网络存档文件。它用于创建 Web 应用程序。
ear:此打包用于创建企业归档文件(ear)。ear 支持创建 j2ee 应用程序,即 EJB 支持,JMS对 ear 文件的支持。最后,ear 文件仅在 glassfish 或 JBoss 等应用服务器上运行。
pom:此包装用于子模块实现。包装 pom 主要意味着没有主要的人工制品。
maven-plugin:用于创建maven插件。
ejb:用于封装EJB模块。
rar:用于创建资源适配器存档(RAR)文件。在 RAR 文件中,它包含带有实现类的 jar 文件和一个 META-INF 文件夹,其中包含服务器特定的部署描述符和 ra.xml 文件,它是 rar 配置文件。
在外部插件和项目的帮助下,maven 支持许多额外的包装。SWF,SWC包装是其中少数。
接下来,让我们继续看看如何使用 maven 创建自定义包装。
在此之前,要了解 maven 自定义打包,需要对 maven 生命周期有一个很好的了解。
现在让我们开始我们的新包创建编码。
首先,我们需要为我们的新打包创建一个插件项目,并在其上添加maven插件创建依赖项。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lici.maven</groupId>
<artifactId>maven-anish-package</artifactId>
<version>1.0</version>
<packaging>maven-plugin</packaging>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<mavenFileManagementVersion>3.0.0</mavenFileManagementVersion>
<mavenArchiverVersion>3.5.0</mavenArchiverVersion>
<mavenVersion>3.1.0</mavenVersion>
<javaVersion>7</javaVersion>
</properties>
<dependencies>
<!-- all dependencies information -->
</dependencies>
</project>
我们的插件项目的 pom.xml 已经准备好了。
让我们继续下一步,我们知道它为每个打包创建一个单独的生命周期,它在META-INF/plexus/components.xml文件中定义。
在我们的例子中,我们正在创建名为“ anish ”的新包装。'anish'打包实现的 components.xml如下所示。
<?xml version="1.0"?>
<!DOCTYPE component-set>
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>anish</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
</implementation>
<configuration>
<phases>
<process-resources>
org.apache.maven.plugins:maven-resources-plugin:2.6:resources
</process-resources>
<compile>
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
</compile>
<process-test-resources>
org.apache.maven.plugins:maven-resources-plugin:2.6:testResources
</process-test-resources>
<test-compile>
org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile
</test-compile>
<test>
org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
</test>
<package>
com.lici.maven:maven-anish-package:1.0:anish
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:2.4:install
</install>
<deploy>
org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy
</deploy>
</phases>
</configuration>
</component>
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>anish</role-hint>
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
<configuration>
<type>anish</type>
<language>java</language>
<addedToClasspath>true</addedToClasspath>
</configuration>
</component>
</components>
</component-set>
在上面的components.xml中,它包含了除了打包阶段之外的所有 jar 打包阶段。它使用自定义实现的打包阶段。
<package>
com.lici.maven:maven-anish-package:1.0:anish
</package>
这里的阶段定义com.lici.maven:maven-anish-package:1.0显示了插件项目的groupId:artifactId:version。最后一个值anish是创建的 mojo bean 名称,它是使用 @Mojo Annotation 创建的。
以下是我们新插件的整体外观。
所以我们创造了我们的新包装。
接下来,让我们将包应用到一个新的 maven 项目上。所以创建了一个新项目,它的 pom.xml 如下所示。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lici.maven</groupId>
<artifactId>maven-packaging</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>anish</packaging>
<build>
<plugins>
<plugin>
<groupId>com.lici.maven</groupId>
<artifactId>maven-anish-package</artifactId>
<version>1.0</version>
<!--declare that this plugin contributes the component extensions-->
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
Maven不知道我们新创建的包装。所以我们需要通过使用插件标签来告诉我们新创建的包装。在插件内部,我们将扩展标志定义为 truetrue<extensions>true</extensions>.如果您正在创建新包装,则扩展标志应设置为 true。
添加插件后,可以将打包称为anishanish<packaging>anish</packaging>.在构建执行中,输出基于anish打包配置创建。
现在我们的新包 anish 已经准备好了,我对其进行了测试,它运行良好!!!如果大家想了解更多相关知识,可以关注一下动力节点的Maven教程,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习