Apache Archiva 帮助指南笔记
Apache Archiva 是什么?
仓库管理软件。
可以轻松构建Maven仓库。
此外,还提供了各种功能,如代理中央仓库等远程仓库、用户权限管理、仓库浏览以及通过索引化实现快速搜索等。
有一些与 Nexus Repository OSS 和 Artifactory 相似的软件存在。
Nexus等不仅支持npm仓库,而且比Archiva功能更强大。
环境
操作系统
Windows 10 – Windows 十
Java
1.8.0_92 -> 1.8.0_92版本
阿帕奇阿基瓦
2.2.1 请提供一个选项即可:
你好,世界
安装
从官方网站下载。
提供了zip和war的分发文件。
如果想要独立运行Apache Archiva,可以使用zip文件。
其中内置了Jetty并且会被使用。
如果已经安装了Tomcat等Servlet容器,并希望以部署在其中的方式使用,可以使用war文件。
这次选择了zip文件。
当你把zip文件解压到任意地点后,安装就完成了。
启动
在解压后得到的文件夹中的 bin 文件夹下打开命令行,并执行以下命令。
> archiva console
服务器启动后,打开浏览器访问 http://localhost:8080/。
停止是按下 Ctrl + C。
创建管理员用户
点击右上方的“创建管理员用户”按钮。
然后,将打开管理员用户的创建页面,填写所需信息以创建管理员用户。
确认行动
默认情况下,已创建名为internal和snapshots的存储库。
internal存储库用于放置发布(稳定)版本的构件,而snapshots存储库用于放置快照(开发)版本的构件。
当您选择菜单中的”Repositories”选项时,会显示一个仓库列表。
“内部已经被设置为中央仓库的代理。”
尝试在浏览器中访问 http://localhost:8080/repository/internal/junit/junit/3.8.1/junit-3.8.1.jar,您可以下载jar文件。
在背后,Apache Archiva会访问Maven中央库存储库并下载jar文件,然后将其缓存到本地并返回给浏览器。
将一次下载的 jar 文件保存在【Apache Archiva 的安装文件夹】/repositories/internal 下。
当再次访问相同的 jar 文件时,将使用存储在本地的 jar 文件,因此将不再访问中央仓库。
此外,已下载的信息可以在 Apach Archiva 上进行搜索和浏览。
您可以通过菜单中的“搜索”和“浏览”选项进行搜索和浏览。
以服务方式注册并在后台运行
将Windows操作系统服务安装,并设置其能够在后台启动。
以管理员权限打开命令提示符,然后进入 bin 文件夹并执行以下命令。
> archiva install
现在,Apache Archiva会作为一个服务进行注册。
只需在服务设置中将其设为自动启动,机器启动时就会自动启动。
如果想要通过命令来控制启动和停止操作,需要以管理员权限执行以下命令。
# 起動
> archiva start
# 停止
> archiva stop
# 状態の確認
> archiva status
如果想要从服务中卸载,请以管理员权限执行以下命令。
> archiva remove
更改端口号
打开conf/jetty.xml文件,并进行以下修正。
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host"/></Set>
- <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
+ <Set name="port"><SystemProperty name="jetty.port" default="9090"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
使用这个设置,就可以在9090端口上启动。
使用Gradle来使用Apache Archiva
apply plugin: 'java'
repositories {
maven {
url 'http://localhost:8080/repository/internal'
}
}
dependencies {
compile 'commons-dbcp:commons-dbcp:1.4'
}
repositories で今まで mavenCentral() と設定していたところを、 Apache Archiva を見るように変更する。
各リポジトリは /repository/<リポジトリ名> で参照できる。
たぶん、 Tomcat とかにデプロイしている場合は /repository の前にコンテキストパスが必要。
创建一个新的代码库
-
- メニューの [Repositories] を選択する。
-
- [Add] をクリック。
- 以下を入力する。
Id
リポジトリを識別する一意なID。test_repository
Name
リポジトリの名前(英数字のみ)。Test Repository
Directory
リポジトリの設定やキャッシュを保存するディレクトリのパス。./repositories/test_repository
Index Directory
インデックスファイルの保存先。未指定の場合は Directory
の直下に .indexer
という名前で作られる。./repositories/test_repository/.indexer
Type
リポジトリの種類(Maven 2.x Repository しか選べない)。Maven 2.x Repository
Cron Expression
リポジトリのスキャンを実行するタイミングを cron
風に設定する。0 0 * * * ?
Days Older
スナップショット版のアーティファクトを何日間保持しておくかの設定。30
Retention Count
スナップショット版のアーティファクトを何個前まで保持しておくかの設定。2
Description
リポジトリの説明(日本語可)。テスト用リポジトリReleases
リリース版のアーティファクトを含めるかどうか。true
Snapshots
スナップショット版のアーティファクトを含めるかどうか。false
Block Redeployments
既にリポジトリに存在するアーティファクトの再デプロイをブロックするかどうか。true
Scanned
リポジトリのスキャンを有効にするかどうか。true
Delete Released Snapshots
リポジトリのパージ中に、既にリリース版が上げられているアーティファクトがあった場合、そのスナップショット版を削除するかどうか。false
Staging Repository
ステージング用のリポジトリを自動で生成するかどうか。false
Skip Packed Index creation
IDE 用に圧縮されたインデックスを作成しない。false
- 必要な設定を入力したら、 [Save] で保存。
设定权限
新建立的存储库在刚创建后,一般用户是无法进行引用的。
为了让任何人都能够引用,需要将权限分配给 guest 用户。
-
- メニューの [Manage] を選択する。
guest の [Edit] を選択する。
[Edit Roles] を選択する。
[Repository Observer] に test_repository が存在するので、チェックをオンにする。
- [Update] をクリックして完了。
作为Maven的中央仓库代理运行
选择[代理连接器]菜单,即可将创建的存储库作为Maven中央存储库的代理来运行。
-
- [Add] を選択。
- 以下を設定。
Network Proxy
ネットワークのプロキシサーバーを介する場合は設定する(詳細後述)。direct connection
Managed Repository
Apache Archiva が管理しているリポジトリを選択する。test_repository
Remote Repository
プロキシするリモートのリポジトリを選択する。central
Pollicies については、正直よくわからなかった。
Checksum は checksum のチェックに失敗したときにどうするかの設定なんだろうけど、 fix ってなに?
Snapshots と Releases は、リポジトリに問い合わせる頻度だろうか?
それ以外は、主にエラーがあったときにどうするか、といった設定ぽいけど、厳密な意味はよく分からなかった。
とりあえずデフォルトのままにして、 [Save] で保存する。
如果使用浏览器访问 http://localhost:8080/repository/test_repository/junit/junit/3.8.1/junit-3.8.1.jar,将会下载 junit 的 jar 文件(如有需要,请将仓库名称部分改为实际注册的仓库名称)。
将非中央仓库作为代理。
默认情况下,中央仓库被注册为远程仓库。
除此之外,可以将任何Maven仓库注册为远程仓库。
试试看将Seasar2的Maven仓库注册。
-
- メニューの [Repositories] を選択。
-
- [Remote Repositories Management] タブを選択する。
-
- [Add] を選択。
- 以下を入力(設定したものだけ)。
Id
seasar2
Name
Seasar2 Repository
Url
http://maven.seasar.org/maven2/
Type
Maven 2.x Repository
- [Save] で保存。
由于可以添加远程存储库,所以要将先前创建的test_repository与该远程存储库关联起来。
-
- メニューの [Proxy Connectors] を選択。
Add を選択して、 test_repository と seasar2 を紐づけるように設定する。
在浏览器中访问 http://localhost:8080/repository/test_repository/net/arnx/jsonic/jsonic/1.2.0/jsonic-1.2.0.jar,并确认是否可以下载jar文件。
查看设定画面时,在最右边有一个名为 Order Edition 的选项。
选择此选项可以指定搜寻工具时的优先顺序。
(使用 Chrome 会导致 JavaScript 错误,而使用 Edge 则可以正常运行)
上传图书馆
从屏幕上传jar文件。
-
- アップロードしたい jar を用意する。
-
- メニューの [Upload Artifact] を選択する。
- 以下を入力。
Repository Id
アップロード先のリポジトリ。Test Repository
Group ID
アーティファクトのグループID。mine
Artifact ID
アーティファクトのID。mylib
Version
アーティファクトのバージョン。1.0.0
Packaging
アーティファクトのパッケージ種別(jar
, war
, ear
など)。jar
Generate Maven POM
pom ファイルを自動で生成されるか。true
-
- アップロードしたい jar を画面にドラッグ&ドロップする。
-
- [Start Upload] をクリック。
- [Save Files] をクリック。
成功上传后,将显示成功消息。
查看已上传的文件。
我发现上传后立即无法反映更改,并在我的环境中通过以下操作使其可以从“搜索”进行搜索。
-
- メニューの [Repositories] を選択する。
test_repositories の [Actions] を開き、 [Directories Scanning] と [Index Scanning] を実行。
只需等一会儿,之后就能在 [浏览] 中看到了。
使用Gradle进行上传
创建用户
虽然可以给访客用户分配上传权限,但我觉得让任何人都可以上传可能不太好,所以我会创建一个专用用户来进行上传试试看。
-
- メニューの [Manage] を選択。
-
- [Add] を選択。
-
- 各項目を入力して [Save] を選択。
今回は deployer という名前のユーザーを作ってみた。
作成された deployer ユーザーの [Edit] を選択する。
[Edit Roles] を選択する。
[Repository Manager] の test_repository にチェックを入れる。
[Update] で保存。
创建一个 build.gradle 文件
apply plugin: 'java'
apply plugin: 'maven' // maven プラグインを有効にする
repositories {
mavenCentral()
}
// groupId
group = 'mine'
// artifactId
jar.baseName = 'mylib'
// version
version = '1.0.0'
uploadArchives {
repositories {
mavenDeployer {
// Archiva のリポジトリを指す URL を設定
repository(url: 'http://localhost:8080/repository/test_repository') {
// 先ほど作成した、アップロード用のユーザー名とパスワードを指定
authentication(userName: 'deployer', password: 'deployer9')
}
}
}
}
// 以下、ソースコードと Javadoc も一緒にアップするための記述
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
执行上传
> gradle uploadArchives
执行上述命令时将进行上传操作。
网络代理设置
当需要从公司内部连接到外部时,需要配置网络代理。
-
- メニューの [Network Proxies] を選択。
-
- [Add] を選択。
- 必要な項目を入力して [Save] を選択。
在这里注册的代理设置将可以在[代理连接器]的[网络代理]中进行选择。
更改密码的有效期限设置
在评论中得到了@sh-ogawa的指导和帮助,非常感谢。
请注意以下事项
如果在浏览器中以登录用户的密码记录的状态下执行此处所述的操作,将会导致错误并使Archiva无法启动。
你只需要打开[LADP]标签就能明白原因。
如果在浏览器中设置了记录密码并自动填充登录信息的选项,那么LDAP选项卡中记录的[bindDn]和[password]的登录信息将会自动输入。
如果在执行[保存]之前没有意识到这一点,Archiva将在启动时尝试连接到LDAP,结果会出现错误,导致Archiva无法启动。
在Archiva中,可以选择不保存密码,或者每次打开LDAP选项卡并清空[bindDn]和[password]后执行[Save]等操作来进行处理。
请注意到这里为止…
默认情况下,密码有一个有效期限,90天后会过期。虽然我还没有等到过期然后确认,但可能可以通过以下操作来更改设置。
-
- メニューの [Users Runtime Configuration] を選択する。
-
- [Properties] タブを開く。
-
- いくつかページを進めると、 security.policy.password.expiration.*** という設定が出てくる。
security.policy.password.expiration.enable を false にすれば、たぶん有効期限の管理が無効になる(失効しなくなる)。
security.policy.password.expiration.days を変更すれば、たぶん有効期限の長さ(日数)を変更できる。
请提供更多上下文信息。
-
- Archiva – The Build Artifact Repository Manager
-
- Apache Archiva を試す
-
- Apache Archivaを使ってみる – amutan日記
- GradleでMavenリポジトリにデプロイする時のメモ – wadahiroの日記