• maven插件的生命周期的详细说明(两)


    插件配置


    定义解释:插件目标

    当我们了解了maven插件之后。我们发现假设为每个功能编写一个独立的插件显然是不可取的,由于这些任务背后有非常多能够复用的代码。因此,把这些功能聚集在一个插件里,每个功能我们就称之为一个插件目标。

    举个样例:

    maven-dependency-plugin有十多个目标,每一个目标相应了一个功能

    分析项目依赖:dependency:analyze

    列出项目依赖树:dependency: tree

    列出项目全部已解析的依赖:dependency:list


    POM中插件全局配置

    有些參数的值从项目的创建到项目公布都不会改变,或者说非常少改变,对于这样的情况,就能够在pom.xml中进行全局配置。

    例:配置一个通用的Java编译版本号

            <build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>3.1</version>
    				<configuration>
    					<source>1.6</source>
    					<target>1.6</target>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>

    这样,无论绑定到compile阶段的maven-compiler-plugin: compile 还是绑定到test-compiler 阶段的maven-compiler-plugin: testCompiler 任务。就都可以使用该配置,基于Java1.6版本号进行编译。


    POM中插件任务配置


    获取插件信息


    在线插件信息

    Maven插件的来源:基本全部基本的maven插件都来自于ApacheCodeHaus

    由于maven本身是属于Apache的。全部它有非常多官方的插件,并且他们具有非常好的稳定性

    除了Apache之外,托管于Codehaus上的Mojo项目也提供了大量的maven插件。

    (注:这些插件的文档和可靠性相对较差,使用的时候出现故障。仅仅能自己查看源代码)


    插件解析机制和常见问题

    与依赖构件一样,插件构件相同基于坐标存储在Maven仓库中。在须要的时候,Maven会从本地仓库寻找插件。假设不存在。则从远程插件仓库查找。找到插件之后,再下载到本地仓库使用


    注:依赖的远程仓库    !=  插件的远程仓库,Maven会差别对待他们。

    Maven须要的依赖在本地仓库中不存在时。Maven去配置的远程仓库中查找

    Maven须要的插件在本地仓库中不存在时。Maven不会去这些远程仓库查找。


    怎样配置插件的远程仓库

    Maven的插件远程仓库使用<pluginRepositories>和><pluginRepository>进行配置

    Maven内置的插件远程仓库配置例如以下:它关闭了对SNAPSHOT的支持,防止不稳定的构建

    <pluginRepositories>
    		<pluginRepository>
    			<id>central</id>
    			<name>Maven Plugin Repository</name>
    			<url>http://repo1.maven.org/maven2</url>
    			<layout>default</layout>
    			<snapshots>
    				<enabled>false</enabled>
    			</snapshots>
    			<releases>
    				<updatePolicy>never</updatePolicy>
    			</releases>
    		</pluginRepository>
    	</pluginRepositories>

    简单配置:

    1.2省略groupId配置:

    Maven针对其官方的插件提供了一种简单的配置策略,其官方的groupId为:org.apache.maven.plugins,在配置的时候能够省略该配置,Maven在解析该插件的时候,会自己主动用默认的groupId补齐。可是普通情况下不推荐此种使用方法,由于仅仅剩下了一行配置。并且easy对新手造成费解。

    2.省略版本号配置:

    maven的POM是採用了继承的机制(在maven的聚合与继承中有具体介绍)。Maven中有一个超级POM,全部的项目都继承了这个超级POM的配置,因此用户不加不论什么配置。Maven使用核心插件的时候,他们的版本号就已经确定了。

    maven-clean-plugin

    maven-compiler-plugin

    maven-surefire-plugin

    假设我们在配置的时候没有配置插件的版本号,Maven会遍历本地仓库和全部远程插件仓库,将该路径下的仓库元数据归并后,就能计算出latest和release版本号。

    在Maven2中::::假设不配置版本号。那么会默认的被解析到latest版本号。这个版本号可能会出现潜在的问题,比方说。这个版本号是快照版本号

    在Maven3中::::假设不配置版本号,那么会默认的被解析到release版本号,这样就攻克了稳定性问题,可是这也可能存在潜在问题,比方说,新版本号的行为与旧版本号的行为发生了变化,这样也会出现构建失败

    所以:使用插件的时候,应该显示的设定版本号。






    佛之孝:众生皆父母。百善孝为先。

    明确心佛众生三无区别,同体名大悲的道理。才知道。关爱他人就是关爱自己,救度他人就是救度自己,对人好,这是对自己好,然后,,众生他们的父母来救度,这是佛的孝心。

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    LeetCode Populating Next Right Pointers in Each Node
    LeetCode Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode Reverse Linked List II
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Pascal's Triangle
    Palindrome Construct Binary Tree from Preorder and Inorder Traversal
    Pascal's Triangle II
    LeetCode Word Ladder
    LeetCode Binary Tree Zigzag Level Order Traversal
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4853082.html
Copyright © 2020-2023  润新知