Maven in action

2020-12-10  本文已影响0人  垃圾简书_吃枣药丸
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <groupId>org.apache.maven.plugins</groupId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    <build>
        <!--设置编译的jar包的文件名-->
        <finalName>maven-learn</finalName>
    </build>
<!--属性-->
<properties>
    <java.version>1.8</java.version>
</properties>

六、依赖范围

在编译源代码和编译测试代码时可能需要不同的依赖,可通过<scope>来控制不同环境的classpath

# 依赖调解

因为A->C的路径更短,所以会解析C(2.0)

因为在POM文件中C(1.0)定义的比较靠前,所以会解析C(1.0)

# 可选依赖

A->B->C(Optional)
A依赖于B,B依赖于C,但是C被标记为可选的,所以在A项目中,不会引入C。(SpringBoot-autoconfiguration中大量使用了该属性)

# 排除依赖 exclusion

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <version>2.3.0.RELEASE</version>
    <!--排除依赖-->
    <exclusions>
        <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </exclusion>
    </exclusions>
</dependency>
</dependencies>

# 超级POM

# 仓库

# 本地仓库
<settings>
    Default: ${user.home}/.m2/repository
    <localRepository>/path/to/local/repo</localRepository>
</settings>
# 为项目设置其他仓库
<repositories>
    <repository>
        <id>aliyun</id>
        <name>阿里云</name>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <!--是否启用-->
            <enabled>true</enabled>
            <!--检查频率-->
            <updatePolicy>always</updatePolicy>
        </snapshots>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <layout>default</layout>
    </repository>
</repositories>
# 远程仓库的认证
    <server>
      <!-- 该id需要与pom.xml中repository设置的id对应起来 -->
      <id>aliyun</id>
      <username>admin</username>
      <password>admin123</password>
    </server> 
# 将依赖发布到远程仓库
<!--发布依赖-->
<distributionManagement>
    <repository>
        <id>pro-release</id>
        <name>正式版</name>
        <url>http://127.0.0.1/release</url>
    </repository>
    <snapshotRepository>
        <id>proj-snapshot</id>
        <name>快照版</name>
        <url>http://127.0.0.1/snapshot</url>
    </snapshotRepository>
</distributionManagement>
# 镜像

如果仓库X能提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。
选择合适的镜像可以帮助我们加快依赖的下载。

 <mirrors>
    <mirror>
      <id>tencent</id>
      <name>tencent maven mirror</name>
      <url>https://mirrors.tencent.com/nexus/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
    <mirror>
      <id>aliyun</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
 </mirrors>

十四、 Maven属性与Profile

1. Maven属性

2. 环境与Profile,为不同的环境启用不同的配置

url=${db.url}
username=${db.username}
password=${db.password}
<profiles>
    <profile>
        <id>futao</id>
        <properties>
            <db.url>http://baidu.com</db.url>
            <db.username>futao</db.username>
            <db.password>123456</db.password>
        </properties>
    </profile>

    <profile>
        <id>hyy</id>
        <properties>
            <db.url>http://hyy.com</db.url>
            <db.username>hyy</db.username>
            <db.password>123456hyy</db.password>
        </properties>
    </profile>
</profiles>
<build>
    <resources>
        <resource>
            <!--解析资源文件-替换maven属性-->
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>
<activeProfiles>
  <activeProfile>dev</activeProfiles>
</activeProfiles>
  1. 基于系统属性
  2. 基于操作系统
  3. 基于文件存在与否
  4. 默认激活
        <profile>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

# 其他

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <!--跳过测试-->
                    <skip>true</skip>
                </configuration>
            </plugin>
    <properties>
        <java.version>1.8</java.version>
        <!--跳过测试-->
        <maven.test.skip>true</maven.test.skip>
        <!--跳过javadoc-->
        <maven.javadoc.skip>true</maven.javadoc.skip>
    </properties>
上一篇下一篇

猜你喜欢

热点阅读