1 . 私服簡介
私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服之后,當 Maven 需要下載構件時,直接請求私服,私服上存在則下載到本地倉庫;否則,私服請求外部的遠程倉庫,將構件下載到私服,再提供給本地倉庫下載。
無私服的情況
有私服的情況
我們可以使用專門的 Maven 倉庫管理軟件來搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。之前我們接觸比較多的是Sonatyp Nexus,今天主要介紹Apache Archiva的使用。
2、安裝使用
1) 首先到archiva主頁上下載最新版(Archiva 2.2.1 Standalone)
http://archiva.apache.org/download.cgi
2)下載后解壓,如(E:\Program Files\apache-archiva-2.2.1)
3)配置jdk,jdk 版本在1.7 以上
4)啟動服務
也可以使用管理員身份運行cmd,進入 archiva 安裝路徑bin 目錄,執行 archiva.bat console ,啟動時的日志信息將會輸出在 控制台上。
5)第一次訪問,在瀏覽器上輸入 http://localhost:8080/#welcome,進入到GUI界面,第一次需要輸入用戶名,密碼,然后點擊創建。(密碼必須有大寫字母和數字,長度不低於8位)
6)默認的Repository
登入后,左側Administration欄列出了所有常用配置。
點擊Reposoitory會看到archiva自帶的默認internal repository 和 remote repository
internal repository表示Archive本地的repository,remote repository代表遠程的repository。
當maven連接到Archiva的internal repository時,Archiva會先從本地尋找目標,找不到的話再從remote repository上繼續尋找。
7) 配置文件結構
以下是幾個常用的配置文件目錄
%ARCHIVA_HOME%/data 數據文件根目錄
%ARCHIVA_HOME%/data/database 里配置了數據庫文件,包括用戶數據庫和系統數據庫
%ARCHIVA_HOME%/data/repositories 包含索引信息。如果上傳了jar等文件的話,也會保存在這里。
%ARCHIVA_HOME%/logs 存放log文件。
使用手冊可參考:http://archiva.apache.org/docs/2.2.1/
8)使用的時候:設置開發者終端的[maven_home]/conf/setting.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> <server> <id>archiva-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>archiva-snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> <mirrors> <mirror> <id>archiva-releases</id> <mirrorOf>internal</mirrorOf> <url>http://localhost:8080/repository/internal</url> </mirror> <mirror> <id>archiva-snapshots</id> <mirrorOf>snapshots</mirrorOf> <url>http://localhost:8080/repository/snapshots</url> </mirror> </mirrors> <profiles> <profile> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>internal</id> <name>Archiva Managed Internal Repository</name> <url>http://localhost:8080/repository/internal</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <name>Archiva Managed Snapshots Repository</name> <url>http://localhost:8080/repository/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles> </settings>
設置項目pom.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> <groupId>io.github.redexpress</groupId> <artifactId>demo</artifactId> <version>1.0</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <distributionManagement> <repository> <id>archiva-releases</id> <url>http://localhost:8080/repository/internal</url> <uniqueVersion>true</uniqueVersion> </repository> <snapshotRepository> <id>archiva-snapshots</id> <url>http://localhost:8080/repository/snapshots</url> </snapshotRepository> </distributionManagement> </project>
傳自定義jar包至maven私服:使用mvn deploy可以上傳到maven私服
mvn deploy:deploy-file -Dfile=model-3.0.0-SNAPSHOT.jar -DrepositoryId=archiva.internal -DgroupId=com.xxx.xxx -DartifactId=model -Dversion=3.0.0-SNAPSHOT -Durl=http://192.168.1.99:8080/repository/internal/