首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在自定义maven插件中解密服务器条目

在自定义maven插件中解密服务器条目
EN

Stack Overflow用户
提问于 2012-07-10 17:01:05
回答 3查看 1.9K关注 0票数 3

我试图编写一个定制的maven-2插件,似乎找不到任何关于读取settings.xml和解密服务器条目的文档。

我查看了一些maven依赖项,比如maven-settingsmaven-settings-builder (都是3.0.3版本,我假设它适用于maven 3,因为我在Server.clone()上找不到异常的方法有问题)。

maven-settings:2.2.1能够加载设置(痛苦的是,您必须提供到settings.xml的路径--是否有一个工厂方法只使用默认的${user.home}/.m2/setings.xml?),但我找不到解密API (就像3.0.3中存在的那样):

代码语言:javascript
复制
DefaultMavenSettingsBuilder builder = new DefaultMavenSettingsBuilder();
Settings settings = builder.buildSettings(new File(System.getProperty("user.home") + "/.m2/settings.xml"));
settings.getServer("id").getPassword(); 
// i get the encrypted String "{gsfdGJHv69}" 

无论如何,我特别需要关于如何(使用maven 2.2.1)的指导:

  1. 将用户的settings.xml加载到org.apache.maven.Settings对象中,而不必指定完整路径
  2. 在settings.xml文件中解密一个特定的命名服务器条目(就像在3.0.3中使用maven- DefaultSettingsDecryptor类:3.0.3DefaultSettingsDecryptor类一样)

都在我的自定义AbstractMojo实现的执行方法中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-10 17:30:08

就像往常一样,只要多花几分钟搜索和搜索源,答案就会出现.

(更新:见@ST对v3.3maven的答复)

深入了解源代码,了解3.0.3是如何解密的,我偶然发现了SecDispatcher接口和DefaultSecDispatcher实现。关于这一术语的快速google让我看到了这篇文章:

  • http://ambientideas.com/blog/index.php/2009/08/encrypted-scm-passwords-in-maven/

其中详细介绍了如何通过丛容器获取SecDispatcher。所以现在我有了一种解密的方法,现在我只需要一种更漂亮的方法来获得设置,这类似于获取SecDispatcher --使用容器:

代码语言:javascript
复制
Settings settings = ( (MavenSettingsBuilder) container.lookup(MavenSettingsBuilder.ROLE) ).buildSettings();

SecDispatcher secDispatcher = (SecDispatcher) container.lookup(SecDispatcher.ROLE, "maven")

String password = secDispatcher.decrypt(settings.getServer("id").getPassword());

最后一个问题是提供范围所需的maven-plugin-apimaven-settings pom依赖关系(这在事实之后很明显),因此它们不会导致绑定和运行时容器版本之间的ClassCastExceptions。

票数 5
EN

Stack Overflow用户

发布于 2012-12-01 11:24:50

这个github项目让我们在一个setttings.xml文件中解码密码

https://github.com/jelmerk/maven-settings-decoder

票数 5
EN

Stack Overflow用户

发布于 2017-02-06 12:57:51

我能够使用内置settingsDecrypter解密密码。

代码语言:javascript
复制
@Component
private SettingsDecrypter settingsDecrypter;

SettingsDecryptionRequest decryptionRequest = new DefaultSettingsDecryptionRequest(possibleProxy);
SettingsDecryptionResult decryptionResult = this.settingsDecrypter.decrypt(decryptionRequest);
Proxy proxy = decryptionResult.getProxy();

用Maven 3.3.9测试。与proxiesservers一样工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11418268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档