@ user944849 나는 올바른 방향으로 시작했고, 여기에 해결책이 있습니다.
<dependency>
<groupId>org.sonatype.plexus</groupId>
<artifactId>plexus-sec-dispatcher</artifactId>
<version>1.4</version>
<scope>compile</scope>
</dependency>
그리고 src/main/resources/META-INF/plexus/components.xml
에 다음을 넣어 : 당신이 메이븐 2를 사용하는 경우
, 당신은 당신의 모조에 다음 종속성을 추가 할 필요가 모조에 그런
<?xml version="1.0" encoding="utf-8" ?>
<component-set>
<components>
<component>
<role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>
<role-hint>mng-4384</role-hint>
<implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>
<requirements>
<requirement>
<role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
<role-hint>mng-4384</role-hint>
<field-name>_cipher</field-name>
</requirement>
</requirements>
<configuration>
<_configuration-file>~/.m2/settings-security.xml</_configuration-file>
</configuration>
</component>
<component>
<role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
<role-hint>mng-4384</role-hint>
<implementation>org.sonatype.plexus.components.cipher.DefaultPlexusCipher</implementation>
</component>
</components>
</component-set>
를 얻을 보통의 속성으로서의 패스워드, 및 roleHint
를 가지는 컴퍼넌트로서 SecDispatcher
를 포함합니다. String
의 decrypt
메서드는 Maven으로 암호화 된 문자열이 아닌 경우 문자열 자체를 반환합니다.
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
/**
* @goal echopass
*
* @phase process-sources
*/
public class MyMojo extends AbstractMojo {
/**
* The password
* @parameter expression="${password}"
*/
private String password;
/**
* Plexus component for the SecDispatcher
* @component roleHint="mng-4384"
*/
private SecDispatcher secDispatcher;
private String decrypt(String input) {
try {
return secDispatcher.decrypt(input);
} catch (SecDispatcherException sde) {
getLog().warn(sde.getMessage());
return input;
}
}
public void execute() throws MojoExecutionException {
String s = decrypt(password);
getLog().info("The password is " + s);
}
}
문자열은 프로필에 settings.xml
의 속성에있을 수 있습니다, 또는 당신은 명령 줄에서 시스템 속성으로 암호화 된 문자열을 전달할 수 있습니다. Colselaws 솔루션 내가 널 포인터 예외를 얻고 있었다 사용
와우! 감사합니다 @ user944849! 파기가 약간 걸렸지 만, maven-scm-plugin에서 시작하는 것이 트릭을 만들었습니다.그 소스는 복잡하지 않습니다. Maven 2를 사용하는 경우, 해독을 수행하는 Plexus 구성 요소를 포함해야합니다. – Colselaw