[Repository]Maven特殊的用法

Maven在现在的开发中可以说是无处不用,至少对于我个人来说是比不可少的,当然gradle也是不错的,今天就来总结以下Maven的一些对我来说比较特殊的用法:

子Module用法注意点

  1. 如果一个Maven项目中有许多的Module子模块, 那么在主Web项目中添加子模块的依赖, 这样在主项目打包的时候, 子模块也会被打包, 步骤:

    • 添加maven-war-plugin插件, 并在其中添加子模块的坐标:
      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                  <overlays>
                        <overlay>
                              <groupId>$<sub-module-groupId></groupId>
                              <artifactId>$<sub-module-artifactId></artifactId>
                        </overlay>
                        <!-- ... -->
                  </overlays>
            </configuration>
      </plugin>
      
    • 添加这个以后会报错: overlay [id <sub-module-artifactId>] is not a dependency of the project blog, 那么在dependencies标签中添加对应项目的dependency即可;
  2. 但是会有一个问题, 一般的我们的项目依赖都是依赖一个jar, 但是子模块是一个一个的大模块, 很有可能是一个war, 解决:

    • 在子模块为war的pom中添加以下plugin
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>2.4</version>
          <configuration>
              <!-- 把war项目的类打包成jar包 -->
              <attachClasses>true</attachClasses>
              <classesClassifier>api</classesClassifier>
          </configuration>
      </plugin>
      
    • 在主Web项目的POM中的dependency中添加type和classesClassifier, 如下
      <type>jar</type>
      <classifier>api</classifier>
      

Install项目的时候加载项目中分散的资源文件

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

配置阿里云的Maven源

Maven的源默认的都是国外的,如果需要大量下载的话,速度相对来说还是比较慢的,在陪配置文件中把源配置切换到国内的阿里Maven源:

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

给Maven配置实用指定的JDK编译项目

<profile>
  <id>jdk‐1.8</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.8</jdk>
  </activation>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  </properties>
</profile>

补充Maven的两点使用注意事项:
1, maven package 不会把jar、war、pom安装到本地仓库,install相反
2, Maven运行的时候,使用的是本地仓库的包,不是Maven项目中Target文件夹中的文件(验证得来)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 概述 Maven 是一个项目管理和整合工具 Maven 为开发者提供了一套完整的构建生命周期框架 Maven...
    闽越布衣阅读 9,836评论 6 39
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,805评论 19 139
  • 我jdk版本是1.7.0_95,在网上查了一下1.7属于java7maven3.3+版本都支持java7,所以我使...
    liangxifeng833阅读 5,068评论 0 2
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,118评论 6 342
  • 数据库基本概念 数据库(database):保存有组织的数据的容器,通常是一个文件或一组文件。 表(table):...
    Temple_Li阅读 1,324评论 0 1

友情链接更多精彩内容