Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 3.2.2没有用-ep或-emp提示输入密码,但apache.org说应该这样做_Maven_Git Bash_Password Encryption - Fatal编程技术网

Maven 3.2.2没有用-ep或-emp提示输入密码,但apache.org说应该这样做

Maven 3.2.2没有用-ep或-emp提示输入密码,但apache.org说应该这样做,maven,git-bash,password-encryption,Maven,Git Bash,Password Encryption,我正试图提高存储maven存储库密码的安全性。此apache页面: ()说: 提示输入密码 在版本3.2.1之前的Maven中,您必须在命令上提供密码 行作为参数(…)。从Maven 3.2.1开始,密码是 可选参数,这意味着如果省略密码,您将 提示输入,以防止出现上述所有问题 听起来不错,我不必清除bash历史记录或vim缓存。但它并不像广告上说的那样有效 我在运行Java1.7的Windows2008R2服务器下,在最新的GitbashforWindows下使用Maven 3.2.2(见下文

我正试图提高存储maven存储库密码的安全性。此apache页面: ()说:

提示输入密码

在版本3.2.1之前的Maven中,您必须在命令上提供密码 行作为参数(…)。从Maven 3.2.1开始,密码是 可选参数,这意味着如果省略密码,您将 提示输入,以防止出现上述所有问题

听起来不错,我不必清除bash历史记录或vim缓存。但它并不像广告上说的那样有效

我在运行Java1.7的Windows2008R2服务器下,在最新的GitbashforWindows下使用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.haspoption(CLIManager.ENCRYPT\u MASTER\u PASSWORD))
{
字符串passwd=cliRequest.commandLine.getOptionValue(CLIManager.ENCRYPT\u MASTER\u PASSWORD);
System.out.println(“[”+passwd+“]);
if(passwd==null | | passwd.isEmpty()| | passwd.equalsIgnoreCase(“null”))
{
试一试{
Console cons=System.Console();
char[]password=(cons==null)?null:cons.readPassword(“主密码”);
if(密码!=null)
{
//密码使用字符串
passwd=String.copyValueOf(密码);
//Sun/Oracle建议清空字符数组
java.util.Arrays.fill(密码“”);
}
}捕获(例外e){
System.out.println(e.getMessage());
e、 printStackTrace();
}
}
DefaultPlexusCipher密码=新的DefaultPlexusCipher();
System.out.println(
cipher.encryptanddecoration(passwd,DefaultSecDispatcher.SYSTEM_属性_secu位置));
抛出新的ExitException(0);
}
有关Cygwin不与System.Console()配合使用的原因,请参阅


您唯一的选择是使用CMD

为什么要使用旧版本的Maven?因为这显然是这个环境中的默认设置,我无能为力;有些人害怕升级。无论如何,3.2.2适用于我们目前使用它的所有功能,而且它应该仍然足够新(见链接),可以提示我输入密码。是的,在Git CMD和CMD.exe下它可以工作。。。他们需要更仔细地研究impl for MingW64这个问题已经有1.5年了,并且仍然适用。我使用maven 3.5.2处理相同的问题。在cygwin中运行时,mvn-ep命令不会提示输入密码。它只是加密一个空字符串。是否有我们可能错过的cygwin设置?