美文网首页Maven
maven---超级pom

maven---超级pom

作者: zlcook | 来源:发表于2017-06-11 16:46 被阅读66次
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
        http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
    -->
    
    <!-- START SNIPPET: superpom -->
    <project>
      <modelVersion>4.0.0</modelVersion>
    
      <repositories>
        <repository>
          <id>central</id>
          <name>Central Repository</name>
          <url>https://repo.maven.apache.org/maven2</url>
          <layout>default</layout>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
    
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <name>Central Repository</name>
          <url>https://repo.maven.apache.org/maven2</url>
          <layout>default</layout>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <releases>
            <updatePolicy>never</updatePolicy>
          </releases>
        </pluginRepository>
      </pluginRepositories>
    
      <build>
        <directory>${project.basedir}/target</directory>
        <outputDirectory>${project.build.directory}/classes</outputDirectory>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
        <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
        <resources>
          <resource>
            <directory>${project.basedir}/src/main/resources</directory>
          </resource>
        </resources>
        <testResources>
          <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
          </testResource>
        </testResources>
        <pluginManagement>
          <!-- NOTE: These plugins will be removed from future versions of the super POM -->
          <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) -->
          <plugins>
            <plugin>
              <artifactId>maven-antrun-plugin</artifactId>
              <version>1.3</version>
            </plugin>
            <plugin>
              <artifactId>maven-assembly-plugin</artifactId>
              <version>2.2-beta-5</version>
            </plugin>
            <plugin>
              <artifactId>maven-dependency-plugin</artifactId>
              <version>2.8</version>
            </plugin>
            <plugin>
              <artifactId>maven-release-plugin</artifactId>
              <version>2.3.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    
      <reporting>
        <outputDirectory>${project.build.directory}/site</outputDirectory>
      </reporting>
    
      <profiles>
        <!-- NOTE: The release profile will be removed from future versions of the super POM -->
        <profile>
          <id>release-profile</id>
    
          <activation>
            <property>
              <name>performRelease</name>
              <value>true</value>
            </property>
          </activation>
    
          <build>
            <plugins>
              <plugin>
                <inherited>true</inherited>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                  <execution>
                    <id>attach-sources</id>
                    <goals>
                      <goal>jar</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>
              <plugin>
                <inherited>true</inherited>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                  <execution>
                    <id>attach-javadocs</id>
                    <goals>
                      <goal>jar</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>
              <plugin>
                <inherited>true</inherited>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                  <updateReleaseInfo>true</updateReleaseInfo>
                </configuration>
              </plugin>
            </plugins>
          </build>
        </profile>
      </profiles>
    
    </project>
    <!-- END SNIPPET: superpom -->
    
    

    2.解读

    • 仓库配置
    <repositories>
    <repository> 
    <id>central</id> 
    <name>Central Repository</name> 
    <url>https://repo.maven.apache.org/maven2</url> 
    <layout>default</layout>
     <snapshots> 
    <enabled>false</enabled> 
    </snapshots> 
    </repository> 
    </repositories>
    
    <pluginRepositories>
     <pluginRepository>
     <id>central</id> 
    <name>Central Repository</name> 
    <url>https://repo.maven.apache.org/maven2</url> 
    <layout>default</layout> 
    <snapshots> 
    <enabled>false</enabled> 
    </snapshots>
     <releases> 
    <updatePolicy>never</updatePolicy> 
    </releases> 
    </pluginRepository> 
    </pluginRepositories>
    
    • 表明:依赖仓库支持发布版本依赖下载,更新策略默认为每天检查一次,不支持快版下载。
      插件仓库发布版本依赖下载,更新策略为从不更新(意味着所有插件都要指定版本号,并且不会更新),不支持快照版本下载。

    • 疑问?
      超级POM中为什么没有指定default周期中默认插件的版本信息?还是我没找到?因为如果没指定会正常根据更新策略解析发布版本构件,而由上面可知,发布版本的更新策略为“从不更新”。

    看其中一段,声明了对插件maven-antrun-plugin的依赖

    <plugin>
     <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.3</version> 
    </plugin>
    

    进入本地仓库查看发现有两个版本1.3和1.8


    Paste_Image.png

    1.3版本内容如下:说明处于更新状态,还没从远程仓库下载到。


    maven-antrun-plugin-1.3构件处于更新状态

    1.8版本内容如下:完整的插件


    maven-antrun-plugin-1.8

    maven-antrun-plugin-1.3.jar.lastUpdated中内容:

    
    #NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
    #Sun Dec 11 16:28:41 CST 2016
    http\://172.19.201.155\:8081/repository/maven-public/.lastUpdated=1481444921950
    http\://172.19.201.155\:8081/repository/maven-public/.error=
    

    说明下载1.3版本失败。通过地址访问私服也没有查看到相应构件。


    更新构件失败,因为在nexus上没找到该构件

    在nexus私服中搜索也只发现有1.8版本的插件


    maven-antrun-plugin在远程仓库Nexus上的版本

    相关文章

      网友评论

        本文标题:maven---超级pom

        本文链接:https://www.haomeiwen.com/subject/nvkmvttx.html