maven-proxy構成:小型mavenエージェントの構築

9802 ワード

前言:mavnは比較的よく使われるプロジェクト管理ツールであり、チーム開発において、共通のプログラムに対して単独で剥離し、mavenに管理されたい場合、統一的なリモートjar管理プラットフォームが必要である可能性がある.maven系には、様々な私服システムがあり、ここで軽量のmavenエージェントを紹介する.それは非常に簡単で、小型会社にとって、十分な実用性がある.
maven-proxyはhttp/servertベースのサーバで、mavenベースのプロジェクトパッケージ(jarなど)を格納するために使用されます.
 
maven-proxyのやり方は大体次の通りです.
1)クライアント開発機器,mavenツールのインストール(http://maven.apache.org)
2)リモートエージェント、maven-proxyのインストール(http://maven-proxy.codehaus.org)
3)クライアントmavenは,リモートjarエージェントサーバアドレスを構成することにより,ローカルにないjarを取得する.
4)管理者または開発者がproxyでpushで利用可能なmavenプロジェクト(jar,source,pom.xmlファイルなどを含む)
5)開発機はmavenプロジェクトでproxyのjarを参照する
 
 
1.mavn-proxyのインストール
 
(http://maven-proxy.codehaus.orgでmaven-proxyをダウンロードし、2種類のインストーラがあります.
1)1つのmaven-proxy-standalone-0.2.zip:これはjavaに基づくプログラムで、解凍後jar.を取得し、コマンドラインを通じてmain方法を実行してサービスを開始する.
2)maven-proxy-webapp-0.2.zip:servetベースjava webプロジェクトtomcatで使用可能..
 
maven-proxyはサービス方式で使用されるべきで、ここではstandaone方式のインストールについて説明します.
 
maven-proxyは、インストール前にプロファイルを変更する必要があります.これも、サービスが正しく使用される前提です.
*.propertiesファイルをWebサイトにダウンロードします(http://maven-proxy.codehaus.org/Configuration)
 
以下に、本人が利用できるpropertiesファイルの全文を示します.
 
################ GLOBAL SETTINGS
# This is where maven-proxy stores files it has downloaded
repo.local.store=./target/repo
#The port to listen on - not used if loaded as a webapp
port=9999

#This is the base area that all files are loaded from. While it is possible to leave this blank, this behaviour
#is deprecated and will be disabled in version 2.0.  There are too many namespace conflicts caused by not using
#a prefix.
#The repository will be shown at http://localhost:9999/repository/
#for the .war loaded into a webapp server, the default prefix is "repository" (edit the web.xml to change)
# As maven doesn't like a trailing slash, this address shouldn't have one either.
prefix=repository

#This is the simple date format used to display the last modified date while browsing the repository.
lastModifiedDateFormat=yyyy/MM/dd HH:mm:ss

################ SNAPSHOT HANDLING
#If you want the proxy to look for newer snapshots, set to true
snapshot.update=true

################ M2 METADATA HANDLING
#If you want the proxy to prevent looking for newer metadata, set to false (default is true)
#metadata.update=false

################ M2 POM HANDLING
#If you want the proxy to look for newer POMs, set to true (default is false)
pom.update=true

################ PROMOTION HANDLING
# ***** NOT CURRENTLY IMPLEMENTED *****
#Promotion describes the process by which new artifacts are loaded to global maven-proxy repository.  It
# is designed to be used by "higher security installations" that do not want to acquire artifacts from
# remote repositories without approval.
#
#If promotion handling is enabled, then the proxy will not download remote artifacts without permission
# (local repositories with copy=false are considered to be local)
#
#Permission to download is granted via the Promotion menu which will be enabled
#  when promotion handling is enabled.
#
#If promotion is false, artifacts are sourced from any repository as per normal.
#
#Promotion and snapshots:  If promotion is enabled, snapshots are not downloadable.  The concept of using
# a snapshot in a production build (which is primarily what promotion is for) is counterintuitive.
##
promotion=false

################ WEB INTERFACE
# This defines the absolute URL the server should use to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
# The prefix will be added to this for the actual repository
# i.e. proxy available at http://localhost:9999/, repository at http://localhost:9999/repository
serverName=http://localhost:9999

#If true, the repository can be browsed
browsable=true

#If true, the repository can be searched
searchable=true

#Not currently implemented. Will allow webdav access to the repository at some point.
webdav=true

#Stylesheet - if configured, will override the default stylesheet shipped with maven-proxy - absolute URLs only
#eg.  /maven-proxy/style.css, http://www.example.com/style.css
stylesheet=/maven-proxy/style.css

#bgColor / bgColorHighlight are replaced in the built in stylesheet to produce a simple color scheme.
#If a stylesheet is set, these are not used.
bgColor=#14B
bgColorHighlight=#94B

#rowColor / rowColorHighlight are replaced in the built in stylesheet to produce a simple color scheme.
#If a stylesheet is set, these are not used.
rowColor=#CCF
rowColorHighlight=#DDF


################ PROXIES
#This is just a hack, it should auto discover them
proxy.list=one

#Unauthenticated proxy
proxy.one.host=repo.test.com
proxy.one.port=3128

#Authenticated proxy
#proxy.two.host=proxy2.example.org
#proxy.two.port=80
#proxy.two.username=username2
#proxy.two.password=password2

#Authenticated proxy
#proxy.three.host=proxy3.example.net
#proxy.three.port=3129
#proxy.three.username=username3
#proxy.three.password=password3


################# REPOSITORIES
#This is not just a hack, it specifies the order repositories should be checked
#Note that the proxy adds a "/" which is why the urls aren't suffixed with a "/"
repo.list=repo-test-com

#local-store
# The local store represents a location that local jars you host can be located.
# This could also be achieved by having a local http repository, but this is less cumbersome
repo.local-repo.url=file:///./target/repo-local
repo.local-repo.description=Super Secret Custom Repository
#If copy is true, jars are copied from the store to the proxy-repo. Only configurable for file:/// repos
repo.local-repo.copy=false
#If hardfail is true, any unexpected errors from the repository will cause
#the client download to fail (typically with a 500 error)
repo.local-repo.hardfail=true
#Don't cache a file repository
repo.local-repo.cache.period=0

repo.repo-test-com.url=http://repo.test.com/repository
repo.repo-test-com.description=maven2
repo.repo-test-com.url.proxy=one
repo.repo-test-com.url.cache.period=3600
repo.repo-test-com.hardfail=false
repo.repo-test-com.cache.failures=true
 
プロファイルではurl情報は記述的な情報であり、実際の意味はありません.これらの情報はサービスを開始した後、ページに表示されます.
 
A)システムにサービスプログラムを配置する経路を作成する:/usr/local/mvn-proxy
B)maven-proxy-standalone-0.2-app.jarをディレクトリに配置するとともに、修正したmavn-proxy.propertiesファイルも同じディレクトリに配置する
C)ディレクトリで、ライブラリファイルを配置するディレクトリ/target/repoを作成する(このフォルダ名はpropertiesの構成情報と一致する)
D)新規コマンドファイル:startup.sh
 
#!/bin/bash
java -jar maven-proxy-standalone-0.2-app.jar maven-proxy.properties
 
同時にshファイルに権限を与える:chmod u+x startup.sh
 
現在の位置まで、mavn-proxyの準備は基本的に終わります.startup.shを実行するだけでサービスを開始できます.
 
サービスのデフォルト構成ポートは9999です.システムにファイアウォール(linux)がある場合は、9999ポートのアクセスを赦免してください.
 
ブラウザにhttp://サーバーip:9999/と入力します.
maven-proxyサービスのトップページも見ることができ、repositoryをクリックすることでライブラリの情報を表示することができる.
 
 
2.mavenの構成
 
Proxyはすでに利用可能ですが、maven(クライアント)を通じてproxyの依存パッケージを取得または感知するにはどうすればいいのでしょうか.
灰色はいつも簡単です....一貫したやり方で、mavenのsetting.xmlを編集してそのproxyの配置情報を増加して、profilesのラベルを見つけます
末尾に次の情報を追加します.
<profile>  
		<id>central-repo</id>  
		<repositories>  
			<repository>  
				<id>local-repo</id>  
				<name>Internal Repository</name>  
				<url>http://192.168.0.105:9999/repository</url>  
			</repository>  
		</repositories>  
		<pluginRepositories>  
			<pluginRepository>  
				<id>local-repo</id>  
				<name>Internal Repository</name>  
				<url>http://192.168.0.105:9999/repository</url>  
			</pluginRepository>  
		</pluginRepositories>  
	</profile> 
  </profiles>
 
注意urlを自分のproxyサーバアドレスに変更してください.その他の情報は変更できません.
プロファイルを構成し終わったら、それをアクティブにするのを忘れないでください.アクティブにする方法は2つあります.1つはプロジェクトのpom.xml構成リファレンスでアクティブにすることです.もう1つはグローバルアクティブにすることです.グローバルアクティブにするにはmavenのsetting.xmlファイルを変更する必要があります.ファイルに追加します.
  <activeProfiles>
    <activeProfile>central-repo</activeProfile>
  </activeProfiles>

 ActiveProfileの値は、あなたが構成したprofileのidと一致します.
3.jarの発行
 
mven-proxy/target/repoというファイルパスを作成しました
jarをパブリッシュするには、このディレクトリに手動でファイルを追加する必要があります.たとえば、message-client-1.1.0.jarをパブリッシュします.
仕様のディレクトリ構造は、mven-proxy/target/repo/com/test/message-client/1.1.0である必要があります.
そしてあなたのmessage-client-1.1.0.jar,message-client-1.1.0.pom,maven.repositoriesの3つの問題はすべてディレクトリに配置されています.
 
サービスを開始すると、ページにjarが表示されます.
 
 
プログラムのproxy中のjarに対する参照は普通のjar依存と同じで、もっと多くの構成をする必要はありません...