解決 Maven 沒法自動下載依賴的問題

現象說明

在咱們寫代碼的時候經常會遇到這樣一個"倔強"的現象,pom.xml文件中依賴的jar包沒法下載,不管是直接 mvn clean 仍是先清空jar所在的本地倉庫中的last unknow文件 | 文件夾,都仍然沒法下載到依賴.apache

緣由

絕大多數是網絡問題致使不能從maven下載.也不排除部分沒有開源的項目.網絡

解決思路

  • 手動管理依賴,將依賴按傳統的方式放入 libs 目錄中。缺點是須要手動管理依賴版本
  • 將依賴安裝到本地倉庫中,按照 Maven 下載依賴的優先級,會優先查找本地倉庫中的依賴。缺點是協同開發時,其餘開發人員會由於本地缺乏依賴致使項目啓動報錯。

解決方案

以上解決思路雖然均可以解決缺乏依賴的問題,但操做起來不太優雅,此時咱們可使用 Maven 提供的插件來解決這個問題- 以下案例:maven

[ 場景 ] : 在使用 kaptcha2.3 (com.google.code.kaptcha)作驗證碼時,maven不能像正常下載到依賴.ui

[ 解決 ] : 建立一個專門的管理此種現象的依賴模塊(modules),如圖:項目結構google

  

注 :插件

(1)libs 存放所須要的依賴 jar 文件, 可在https://mvnrepository.com搜索手動下載code

  

(2)pom.xml 增長插件配置 : maven-install-plugin --> 做用: 經過該插件,咱們能夠在執行 mvn clean 命令時將項目所須要的依賴自動安裝進本地倉庫xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.hjj</groupId>
        <artifactId>my-shop-dependencies</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../my-shop-dependencies/pom.xml</relativePath>
    </parent>

    <artifactId>my-shop-external</artifactId>
    <packaging>jar</packaging>

    <name>my-shop-external</name>
    <description></description>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <executions>
                    <execution>
                        <id>install-external-kaptcha</id>
                        <!-- 觸發時機:執行 mvn clean 命令時自動觸發插件 -->
                        <phase>clean</phase>
                        <configuration>
                            <!-- 存放依賴文件的位置 -->
                            <file>${project.basedir}/libs/kaptcha-2.3.jar</file>
                            <repositoryLayout>default</repositoryLayout>
                            <!-- 自定義 groupId -->
                            <groupId>com.google.code.kaptcha</groupId>
                            <!-- 自定義 artifactId -->
                            <artifactId>kaptcha</artifactId>
                            <!-- 自定義版本號 -->
                            <version>2.3</version>
                            <!-- 打包方式 -->
                            <packaging>jar</packaging>
                            <!-- 是否自動生成 POM -->
                            <generatePom>true</generatePom>
                        </configuration>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

最後,經過 mvn clean 命令便可將項目所須要的依賴自動安裝進本地倉庫.blog

相關文章
相關標籤/搜索