Maven注意事项

700 阅读4分钟

安装(mac)

1、检查 JAVA_HOME 环境变量

Maven 是使用 Java 开发的,所以必须要java环境 2、下载 Maven,并解压到某个目录 例如:/Users/xxx/apache-maven-3.3.3 3、设置Maven classpath

$ vi ~/.bash_profile
// 添加如下代码,保存并退出Vi:
export M2_HOME=/Users/robbie/apache-maven-3.3.3
export PATH=$PATH:$M2_HOME/bin

4、使bash_profile生效

$ source ~/.bash_profile

5、查看Maven是否安装成功

$ mvn -v 

配置

1、配置本地仓库

1)、Maven 的核心程序并不包含具体功能,仅负责宏观调度,具体功能由插件来完成。

Maven 核心程序会到本地仓库中查找插件。如果本地仓库中 没有就会从远程中央仓库下载。此时如果不能上网则无法执行 Maven 的 具体功能。为了解决这个问题,我们可以将 Maven 的本地仓库指向一个 在联网情况下下载好的目录。

2)、Maven 默认的本地仓库(mac):~(/Users/XXX/.m2)/settings.xml

~:表示当前用户的家目录。

3)、找到 Maven 的核心配置文件 settings.xml 文件

解压目录:%M2_HOME%\conf\settings.xml

4)、设置方式

// 本地仓库的路径:
<localRepository>/Users/XXX/.m2/repository</localRepository>

2、配置阿里云镜像

为了下载 jar 包方便,在 Maven 的核心配置文件 settings.xml 文件的标签里面配置以下标签:

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

3、配置公司仓库用户名和密码

<servers>
    <server>
      <id>jfrog-releases</id>
      <username>username</username>
      <password>password</password>
    </server>
    <server>
      <id>jfrog-snapshots</id>
      <username>username</username>
      <password>password</password>
    </server>
</servers>

4、配置公司仓库信息

 <profiles>
   <profile>
      <id>dev</id>
      <repositories>
        <repository>
            <id>jfrog-virtual</id>
            <name>artifactory-releases</name>
            <url>https://公司指定地址/artifactory/SR_maven_virtual/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
        <repository>
            <id>nexus</id>
            <name>nexus</name>
            <url>http://公司指定地址/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
   </repositories>
    </profile>
 </profiles>
 
<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

5、在 Idea 中配置 Maven

  • 自带的 Maven,本地仓库自动为我们设置的仓库

企业微信截图_53f3d9e5-fc29-406d-978c-fb15f602b62f.png

  • 配置自己安装的 Maven

企业微信截图_fa59081f-0c70-4587-adef-d654fee1dcff.png

常用技巧

1、常用命令

企业微信截图_e8f4f65f-9e46-45b0-a660-18ad5807ea29.png

mvn:install : 父工程创建完,执行该命令将父工程发布到仓库方便子工程继承。 maven clean deploy : deploy代码到仓库。{注意:若上传代码到仓库失败(没权限),要增加账号到maven配置文件:XXX/.m2/settings.xml的servers下}

项目构建命令

mvn clean -U package -T 1C -Dmaven.test.skip=true -pl 项目名 -am

cp 项目名/target/项目名-1.0.0-SNAPSHOT.jar ./项目名-1.0.0-SNAPSHOT.jar

tar -zcf 项目名-1.0.0-SNAPSHOT.tar.gz "./项目名-1.0.0-SNAPSHOT.jar"

启动命令

nohup java -Xms725M -Xmx925M -jar 项目名-1.0.0-SNAPSHOT.jar &

2、pom配置

Maven之pom.xml配置文件详解

1)、dependencyManagement:一般用在父工程

  • 管理依赖版本号,通常在一个组织或项目最顶层的父pom中,让所有子项目引用一个依赖而不用显示的列出版本号。
  • 子模块继承后,提供作用:锁定版本,子module不用写groupId和version
  • 注意:只是声明依赖,并不实现引入。因此子项目需要显示声明需要的依赖。若子项目指定了版本号,则子项目使用指定的jar版本

2)、exclusions:屏蔽依赖关系,解决依赖的jar版本冲突

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 -->  
    <exclusions>
        <exclusion>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3)、distributionManagement:项目分发信息,在执行mvn deploy后表示要发布的位置

该信息信息指定把网站部署到远程服务器或者把构件部署到远程仓库(与settings文件servers中配置的公司仓库信息对应)

<distributionManagement>
    <repository>
        <id>jfrog-releases</id>
        <name>artifactory-releases</name>
        <url>https://公司指定地址/artifactory/SR_maven_releases_local/</url>
    </repository>
    <snapshotRepository>
        <id>jfrog-snapshots</id>
        <name>artifactory-snapshots</name>
        <url>https://公司指定地址/artifactory/SR_maven_snapshots_local</url>
    </snapshotRepository>
</distributionManagement>

4)、repositories:发现依赖和扩展的远程仓库列表

包含需要连接到远程仓库的信息(与settings文件profiles中配置的公司仓库信息对应)

 <repositories>
        <repository>
            <id>jfrog-virtual</id>
            <name>artifactory-releases</name>
        <url>https://公司指定地址/artifactory/SR_maven_virtual/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
    <repository>
        <id>nexus</id>
        <name>nexus</name>
        <url>https://公司指定地址/nexus/content/groups/public/</url>
        <releases>
            <enabled> true </enabled>
        </releases>
        <snapshots>
            <enabled> true </enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
</repositories>

5)、pluginRepositories:发现插件的远程仓库列表

这些插件用于构建和报表(与settings文件profiles中配置的公司仓库信息对应)

<pluginRepositories>
    <pluginRepository>
        <id>jfrog-virtual</id>
        <name>artifactory-releases</name>
        <url>https://公司指定地址/artifactory/SR_maven_virtual/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>nexus</id>
        <name>nexus</name>
        <url>https://公司指定地址/nexus/content/groups/public/</url>
        <releases>
            <enabled> true </enabled>
        </releases>
        <snapshots>
            <enabled> true </enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

3、跳过单元测试

企业微信截图_0ca9653b-915f-438f-b345-7c35fa41fb63.png

4、项目启动非常慢(mac)

处理:/ets/hosts 添加机器地址:127.0.0.1 localhost yanzhus-MacBook-Pro.local

原因:启动时会循环遍历找机器

机器名:系统偏好设置-共享(您的本地网络上的电脑可以通过以下地址访问您的电脑: XXX-MacBook-Pro.local)

企业微信截图_158cc0d1-8abd-406a-af77-e32e9ddc926e.png

5、导入项目异常

1)、导入项目后在右侧没有maven project窗口

选中项目根pom文件:右键选择add as maven project

2)、test包下单元测试ctrl进入不了文件(can't find ...)

选中test包: 右键选择Mark directory as - Test Resources Root

3)、Kotlin: Language version 1.1 is no longer supported; please, use version 1.2 or greater

  • 1)、设置Kotlin Compiler
  • 2)、Kotlin Compiler设置 若不起作用,直接在该项目project structure设置 企业微信截图_26751763-3a93-4c90-b15e-5979eea0324e.png