目前我们正在使用Apache Karaf v4.2.8作为windows服务安装/运行。
我们使用AWS代码工件作为mvn存储库,这里的问题是令牌只能持续12小时,这意味着每次我们需要使用新令牌时,我们都需要重新启动windows服务/karaf,以便它能够正确地获取令牌并进行身份验证(只有当我们需要安装新功能时才会出现问题)
我错过了什么吗?有没有办法使用环境变量之类的?
Karaf包含maven
功能,您可以安装它来管理您的Maven存储库:
karaf@root()> feature:install maven
例如:
karaf@root()> maven:repository-list
== Remote repositories
ID │ URL
────────────────────────────────┼───────────────────────────────────────────────────────────────
central │ https://repo1.maven.org/maven2/
apache │ https://repository.apache.org/content/groups/snapshots-group/
ops4j.sonatype.snapshots.deploy │ https://oss.sonatype.org/content/repositories/ops4j-snapshots/
== Default repositories
ID │ URL
────────────────────────┼────────────────────────────────────────────────
system.repository │ file:/data/servers/apache-karaf-4.3.6/system/
kar.repository │ file:/data/servers/apache-karaf-4.3.6/data/kar/
child.system.repository │ file:/data/servers/apache-karaf-4.3.6/system/
您可以使用maven:repository-change
命令更改任何远程maven存储库的配置。
默认情况下,您的Maven主密码(参见mvn -emp
)取自~/.m2/settings-security.xml
,但是如果您调用maven:password -emp -p
,您可以设置新的主密码,并且Karaf将在下面创建新的settings-security.xml
并将您的etc/org.ops4j.pax.url.mvn.cfg
指向该文件。例如:
karaf@root()> maven:password -emp -p
Maven security settings will be stored in new file. This file will be used in org.ops4j.pax.url.mvn.security property. Continue? (y/N) y
Master password to encrypt: ********
Encrypted master password: {xxx}
New security settings stored in "/data/servers/apache-karaf-4.3.6/data/cache/bundle52/data/maven-security-settings-1651245247562.xml"
maven-security-settings-1651245247562.xml
看起来像这样:
$ cat /data/servers/apache-karaf-4.3.6/data/cache/bundle52/data/maven-security-settings-1651245247562.xml
<?xml version="1.0" encoding="UTF-8"?>
<settingsSecurity>
<master>{xxx}</master>
</settingsSecurity>
和etc/org.ops4j.pax.url.mvn.cfg
包含两个新属性:
org.ops4j.pax.url.mvn.settings = /data/servers/apache-karaf-4.3.6/data/cache/bundle52/data/maven-settings-1651244980542.xml
org.ops4j.pax.url.mvn.security = /data/servers/apache-karaf-4.3.6/data/cache/bundle52/data/maven-security-settings-1651245247562.xml
第二个包含您的新主密码,第一个是您现有的~/.m2/settings.xml
的副本
您可以使用
更改存储库密码:karaf@root()> maven:repository-change -id central --username test --password test
Maven settings will be updated and org.ops4j.pax.url.mvn.settings property will change. Continue? (y/N) y
New settings stored in "/data/servers/apache-karaf-4.3.6/data/cache/bundle52/data/maven-settings-1651245438306.xml"
maven-settings-1651245438306.xml
已经创建,Maven Central现在看起来像这样:
<server>
<username>test</username>
<password>test</password>
<id>central</id>
</server>
您也可以使用加密密码。首先获取它:
karaf@root()> maven:password -ep
Password to encrypt: ****
Encrypted password: {xxx}
You can use this encrypted password when defining repositories and proxies
并使用它:
karaf@root()> maven:repository-change -id central --username test --password '{xxx}'
Maven settings will be updated and org.ops4j.pax.url.mvn.settings property will change. Continue? (y/N) y
New settings stored in "/data/servers/apache-karaf-4.3.6/data/cache/bundle52/data/maven-settings-1651245586888.xml"
多亏了之前创建的主密码,一切都很好:
karaf@root()> maven:repository-list -x
== Remote repositories
ID │ URL │ Username │ Password
────────────────────────────────┼────────────────────────────────────────────────────────────────┼──────────┼─────────
central │ https://repo1.maven.org/maven2/ │ test │ test
和maven-settings-1651245586888.xml
包含:
<server>
<username>test</username>
<password>{xxx}</password>
<id>central</id>
</server>
这些命令只是在配置管理和org.ops4j.pax.url.mvn
PID上操作。但是他们在下面给你透明的settings.xml
处理。
查看关于Karaf Maven命令的文档:https://karaf.apache.org/manual/latest/#_maven_configuration_commands