自己做公司网站简单吗,外国人做的关于中国的视频网站吗,网络设计专业究竟好不好就业,有关建设旅行网站的建设最近训练营有小伙伴问到松哥一个关于 Maven 依赖的问题#xff0c;涉及到 classifier 属性#xff0c;随机问了几个小伙伴#xff0c;都说工作中没用到过#xff0c;因此简单整篇文章和小伙伴们分享下。
Maven 大家日常开发应该都有使用#xff0c;Maven 中有一个比较好玩…最近训练营有小伙伴问到松哥一个关于 Maven 依赖的问题涉及到 classifier 属性随机问了几个小伙伴都说工作中没用到过因此简单整篇文章和小伙伴们分享下。
Maven 大家日常开发应该都有使用Maven 中有一个比较好玩的 classifier 属性不知道小伙伴们有没有用过
简单聊一聊这个话题。
一 Classifier 属性的作用
Classifier 属性在 Maven 中的主要作用是用于区分同一 artifact 的不同版本或变种。在 Maven 的坐标系统中一个 artifact 通常由 groupId、artifactId 和 version 三个基本元素确定。
然而在某些情况下我们可能需要为同一个 artifact 创建多个不同的版本或变种比如源代码包、文档包或特定平台的二进制包等。这时Classifier属性就派上了用场。
通过为 artifact 添加 Classifier 属性我们可以为同一个 artifact 创建多个不同的附件attachment。这些附件可以是源代码、测试代码、文档、特定平台的二进制文件等。每个附件都有一个唯一的 Classifier 值用于区分它们。这样我们就可以在 Maven 仓库中存储和管理这些不同的 artifact 变种并在构建过程中根据需要引用它们。
例如下面这张图 如果我想引用第一个 shiro-web-2.0.0-jakarta.jar 该怎么写呢下面这种写法显然不对这种写法引入的是 shiro-web-2.0.0.jar。
dependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-web/artifactIdversion2.0.0/version
/dependency二 在依赖中引用Classifier
当我们需要在其他 Maven 项目中引用具有 Classifier 的 artifact 时我们需要在依赖声明中指定 classifier 属性。例如
dependencies dependency groupIdcom.example/groupId artifactIdmy-artifact/artifactId version1.0.0/version classifiersources/classifier typejar/type scopecompile/scope /dependency
/dependencies在上面的示例中我们引用了一个 Classifier 值为 sources 的 artifact 变种。Maven 将根据 groupId、artifactId、version 和 classifier 的值在仓库中查找相应的 artifact并将其添加到项目的依赖中。
如果是上面的 Shiro 依赖呢写法如下
dependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-web/artifactIdversion2.0.0/versionclassifierjakarta/classifier
/dependency三 自定义 Classifier 属性
上面是我们引用别人的项目配置 Classifier如果要在自己的 Maven 项目中定义 Classifier那么我们需要在 pom.xml 文件中进行相应的配置。具体来说我们需要在 build 标签下添加 maven-jar-plugin 插件并为其配置 classifier 属性。例如如果我们想要创建一个包含源代码的 artifact 变种可以这样做
build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-jar-plugin/artifactId version3.2.0/version executions execution goals goaljar/goal /goals /execution execution idattach-sources/id goals goaljar/goal /goals configuration classifiersources/classifier /configuration /execution /executions /plugin /plugins
/build在上面的示例中我们为 maven-jar-plugin 插件添加了一个名为 attach-sources 的执行并为其配置了 classifier 属性为 sources。这表示我们将创建一个包含源代码的 artifact 变种其 Classifier 值为 sources。
四 总结
Maven 的 Classifier 属性为我们在构建和管理 Java 项目时提供了极大的灵活性。通过为 artifact 添加 Classifier 属性我们可以创建多个不同的版本或变种以满足不同的项目需求或构建环境。同时我们还可以在依赖声明中引用具有 Classifier 的 artifact从而轻松地将其集成到其他项目中。