Maven

(XII)约定优于配置

2018-06-25  本文已影响0人  SonyaBaby

Convention Over Configuration

Maven提倡“约定优于配置”,这是Maven最核心的设计理念之一。使用约定可以大量减少配置。

我们需要遵循Maven的约定:

遵循约定虽然损失了一定的灵活性,用户不能随意安排目录结构,但是可以减少配置。同时帮助用户遵守构建标准。

自定义约定

<project>
  <groupId>com.play.myMaven</groupId>
  <artifactId>hello-maven-aggregator</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <build>
    <sourceDirectory>src/java</sourceDirectory>
  </build>
</project>

这样源码目录就成了src/java而不是默认的src/main/java

超级POM

找到~\lib\maven-model-builder-3.3.9\org\apache\maven\model中的pom-4.0.0.xml

仓库定义
<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>
    ...
</build>

依次定义了项目的主输出目录、主代码输出目录、最终构件的名称格式、测试代码输出目录、主源码目录、脚本源码目录、测试源码目录、主资源目录和测试资源目录。

核心插件设定版本
<pluginManagement>
  <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>

Maven设定核心插件是为了防止由于版本变化而造成构建不稳定。
更多关于插件配置,飞机票→Maven插件

上一篇 下一篇

猜你喜欢

热点阅读