摇篮,而不是背后的代理工作与NTLM在Windows(Gradle, not working beh

2019-08-07 14:35发布

我只是测试了gradle这个(在这一领域的绝对小白)。

我在Windows中尝试了这一点。 我曾经有过的Maven做构建和从同一台机器释放我。 它的背后是使用NTLM身份验证的代理。 这用来工作没有问题。 然而,不知何故摇篮是不是做对我来说。

我的build.gradle有以下配置(除了其他)

// Java plugin to build our JAR artifact.
apply plugin: 'java'  

// Build stuff with jdk 1.7
sourceCompatibility = 1.7
targetCompatibility = 1.7

// Regular name and version for your project. 
group = 'foo.bar.gradle'
version = '1.0-SNAPSHOT'

// The local maven repository
def localMavenRepo = 'file://C:/ProgramFiles/MavenRepository'

repositories {
// Use the maven central repository. 
mavenCentral()
// ... and the local maven repository.
maven { url localMavenRepo }

// maven { url 'http://www.springsource.com/repository/' }
}


dependencies {
compile 'org.databene:contiperf:2.2.0','org.springframework:spring-webmvc:3.2.0.RELEASE'         
testCompile 'junit:junit:4.11' 
/*compile.exclude module: 'commons'*/
/*all*.exclude*/ 
}

我/gradle.properties具有以下设置

systemProp.proxySet=true
systemProp.http.proxyHost=<proxy name, same as that set in Maven>
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=<domain name>/<user name> 

然而,当我运行它,我得到以下错误

NEGOTIATE authentication error: No valid credentials provided (Mechanism level:
No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)
)

这是摇篮的1.3版本。 请帮忙。

更新:我现在已经更新到摇篮-1.4-RC-3我gradle.properties文件看现在这个样子

systemProp.proxySet="true"
systemProp.http.keepAlive="true"
systemProp.http.proxyHost=<proxy name> 
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=<domain name>/<username> 

但我还是继续看问题。 我有一些更多的日志。 我看到这个在STS(IDE)

Could not GET 'http://repo1.maven.org/maven2/org/spr...'. Received status code 500 from server: Internal Server Error 
Could not execute build using Gradle installation 'C:\ProgramFiles\gradle-1.4-rc-3'.

不,凭证都没有错。 在相同的设置,有相同的价值观Maven是工作的罚款。 不,在gradle.properties是在正确的位置为好。 如果我更改代理的值,误差变化。 因此,该工具肯定是读gradle.properties文件。

Answer 1:

更新:

随着时间的推移,更好的解决方案:

与NTLM代理工作时添加的旅行车HTTP的轻量级扩展旅行车HTTP轻量级库处理与Maven的3认证的局限性。

从下载的maven回购货车-HTTP-轻量级-2.2.jar。 复制车皮HTTP轻量级-2.2.jar到%M2_HOME%/ lib / ext目录文件夹中。

原来的答案:

我有同样的问题。 这与微软的服务器(ISA等)的共同问题。 在应用程序中使用的HTTP标头不支持NTLM(至少直接地)
要绕过这个问题,我使用了“代理到代理”。 本地代理,这将改变在运行的HTTP标头,以便Microsoft服务器可以明白你的要求。

基本上,你会送您的要求本地(127.0.0.1)这个代理服务器将改变与NTLM符合要求的报头,并将其转发给父代理的8080端口上。

两种情况:你有管理员特权与否。

如果您拥有管理员权限,可以安装CNTLM将作为服务安装。 有一个“自动配置”安装,您可以检查CNTLM的维基(默认端口:3128)

如果您没有管理员权限,可以安装NTLM APS (即使它是很老,它为我的作品)
您需要配置SERVER.CFG文件与你的NT域,主机,父代理+端口,1 NTLM_TO_BASIC默认端口是5865(您可以通过按键盘“窗口+暂停”按钮,得到你的域名和主机)。

对于NTLMAPS,你需要的Python(Python的便携式不需要管理员权限,并在“runserver.bat”的值更改为匹配您的安装),你还需要修补SourceForge上的版本, 这个补丁 ,因为它有一个与错误分块响应

在您的应用程序,您需要更改您的代理设置如下:

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=3128 or 5865 depending on which server you installed

有时,微软服务器仍然块的请求,我需要重新启动我的本地代理或更改父代理地址。



Answer 2:

这是一个相当古老的问题,但还是google搜索“gradle这个”和“NTLM代理”时,第一个命中一个。 有没有关于它的多文档,但如果gradle这个抱怨像

不能让“ https://jcenter.bintray.com/org/slf4j/ ...

和你使用cntlm为您的代理,那么这个命令行可能会有所帮助:

gradle test -DproxySet=true -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3128

(对于代理名称和端口假设默认值)。 请注意“https”开头的设置。 缺少下载用这些设置成功合作。



Answer 3:

我还记得背后,在过去的NTLM代理工作。 正如我们曾在* nix箱,因为在这些操作系统没有它的支持,我们不能使用NTLM代理。 我也并不认为摇篮支持NTLM,但我可能是错的。

总之,我们用当时的事情是(cntlm)http://cntlm.sourceforge.net/]代理,你可以做同样的事情。 只需将它设置你的机器上,并在其指向摇篮的代理设置。

编辑 :显然我错了-摇篮支持NTLM身份验证,请参阅发行说明1.0里程碑-8



Answer 4:

摇篮取决于在Apache的HttpClient + JCIFS做NTLM身份验证。

有一个在HttpClient的4.2.1和4.2.2中的错误可能会导致的问题:有2个选项,您可以尝试。

  • 升级到摇篮1.4-RC-3或更高,其中包含一个错误修复此问题。
  • 包括systemProp.http.keepAlive="true"在你的gradle.properties文件。


Answer 5:

鉴于你有你的maven回购协议下的C:\ PROGRAMFILES,而不是在一个典型的可写的位置,比如在用户目录

%USERPROFILE%\.m2\repository || ~/.m2/repository 

你的错误可能是Windows权限错误...请务必检查您的Windows日志和/或尝试回购移动到传统位置...



Answer 6:

我能修补摇篮核心V1.10使用的BASIC而不是NTLM,它在我们的环境中工作。

如果您想尝试,jar文件是这里

使用您自己的风险。



文章来源: Gradle, not working behind proxy with NTLM on Windows
标签: java gradle