Chr*_*ite 3 maven-2 maven-plugin maven
我正在尝试编写一个自定义的maven-2插件,似乎无法找到有关读取settings.xml和解密服务器条目的任何文档.
我环顾了一些maven依赖项,例如maven-settings和maven-settings-builder(版本3.0.3,我假设它为maven 3,因为我遇到了一个方法未找到异常的问题Server.clone()).
maven-settings:2.2.1 能够加载设置(痛苦的是,你必须提供settings.xml的路径 - 是否有工厂方法只使用默认的$ {user.home} /.m2/settings.xml?),但是我找不到解密API(就像3.0.3中存在的那样):
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}"
Run Code Online (Sandbox Code Playgroud)
无论如何,我特别寻找关于如何(与maven 2.2.1)的指导:
org.apache.maven.Settings对象中,而无需指定完整路径DefaultSettingsDecryptor类一样)都在我的自定义AbstractMojo实现的execute方法中
一如既往,只需花费几分钟时间搜索和搜索源代码,并回答问题......
(更新:请参阅@ ST-DDT对v3.3 maven的回答)
通过源头了解3.0.3如何解密我偶然发现了SecDispatcher接口和DefaultSecDispatcher实现.这个术语的快速谷歌让我看到这篇文章:
其中详细介绍了如何通过plexus容器获取SecDispatcher.所以现在我有办法解密,现在我只需要更漂亮的方式来获取设置,这类似于SecDispatcher的获取 - 使用容器:
Settings settings = ( (MavenSettingsBuilder) container.lookup(MavenSettingsBuilder.ROLE) ).buildSettings();
SecDispatcher secDispatcher = (SecDispatcher) container.lookup(SecDispatcher.ROLE, "maven")
String password = secDispatcher.decrypt(settings.getServer("id").getPassword());
Run Code Online (Sandbox Code Playgroud)
最后的疑难杂症是同一个问题maven-plugin-api,并maven-settings提供范围(事后明显)需要POM依赖关系,因此他们并没有引起捆绑和运行时容器版本之间的ClassCastExceptions
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |