gpt4 book ai didi

Maven 3.2.2 不使用 -ep 或 -emp 提示输入密码,但 apache.org 表示应该

转载 作者:行者123 更新时间:2023-12-04 08:55:03 24 4
gpt4 key购买 nike

我正在尝试提高存储我的 Maven 存储库密码的安全性。这个 apache 页面:
( https://maven.apache.org/guides/mini/guide-encryption.html ) 说:

Prompting for Password

In Maven before version 3.2.1 you have to give the password on command line as argument (...). Starting with Maven 3.2.1 the password is an optional argument which means if you omit the password you will be prompted for it which prevents all the issues mentioned above.



听起来不错,我不必清除 bash 历史记录或 vim 缓存。但它并不像宣传的那样工作!

我在运行 Java 1.7 的 Windows 2008 R2 服务器下的最新 gitbash-for-windows 下使用 Maven 3.2.2(见下文)(我知道,但我不是这里的管理员)。

我错过了什么?
bb@MACHINE MINGW64 $ mvn --version
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T15:51:42+02:00)
Maven home: C:\tools\apache-maven-3.2.2
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk7\jre
Default locale: nl_NL, platform encoding: Cp1252
OS name: "windows servevr 2008 r2", version: "6.1", arch: "amd64", family: "windows"

bb@MACHINE MINGW64 $ mvn -ep
{}

bb@MACHINE MINGW64 $ mvn --encrypt-password
{}

bb@MACHINE MINGW64 $ mvn --encrypt-master-password
{}

bb@MACHINE MINGW64 $ mvn --emp
{}

如果我用老式的方式来做,它工作正常:
bb@MACHINE MINGW64 $ mvn --encrypt-master-password myPwd
{pohBRxk/rXUHL/TT9wgt/sUvny5ssiCWsij1pgTpU7Q=}

最佳答案

此问题是 Java 未将 Cyqwin 识别为控制台的结果。调用 System.Console() 结果为空。

Maven 的行为是在无法获得对控制台的引用时不加密任何内容。

if ( cliRequest.commandLine.hasOption( CLIManager.ENCRYPT_MASTER_PASSWORD ) )
{
String passwd = cliRequest.commandLine.getOptionValue( CLIManager.ENCRYPT_MASTER_PASSWORD );
System.out.println("["+passwd+"]");
if ( passwd == null || passwd.isEmpty() || passwd.equalsIgnoreCase("null"))
{
try {
Console cons = System.console();
char[] password = ( cons == null ) ? null : cons.readPassword( "Master password: " );
if ( password != null )
{
// Cipher uses Strings
passwd = String.copyValueOf( password );

// Sun/Oracle advises to empty the char array
java.util.Arrays.fill( password, ' ' );
}
}catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}

DefaultPlexusCipher cipher = new DefaultPlexusCipher();

System.out.println(
cipher.encryptAndDecorate( passwd, DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION ) );

throw new ExitException( 0 );
}

this为什么 Cygwin 不适用于 System.Console() .

您唯一的选择是使用 CMD .

关于Maven 3.2.2 不使用 -ep 或 -emp 提示输入密码,但 apache.org 表示应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41185607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com