gpt4 book ai didi

java - Gradle,不在 Windows 上使用 NTLM 代理工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:20 25 4
gpt4 key购买 nike

我只是在测试一个 gradle(这个领域的绝对菜鸟)。

我正在 Windows 机器上尝试这个。我曾经让 Maven 在同一台机器上为我进行构建和发布。它位于具有 NTLM 身份验证的代理之后。这曾经很好用。但是,不知何故,Gradle 并没有为我这样做。

我的 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)
)

这是 Gradle 的 1.3 版。请帮忙。

更新:我现在已经更新到 gradle-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 文件。

最佳答案

更新:

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

添加 wagon-http-轻量级扩展Wagon HTTP 轻量级库在使用 NTLM 代理时处理 Maven 3 中的身份验证限制。

从 maven 仓库下载 wagon-http-lightweight-2.2.jar。将 wagon-http-lightweight-2.2.jar 复制到 %M2_HOME%/lib/ext 文件夹。

原答案:

我遇到了完全相同的问题。这是微软服务器(ISA 等)的常见问题。 NTLM 不支持您的应用程序中使用的 http header (至少,直接)
为了绕过这个,我使用了“代理到代理”。将动态更改 http header 的本地代理,以便 Microsoft 服务器可以理解您的请求。

基本上您将在本地 (127.0.0.1) 发送您的请求,此代理服务器将使用符合 NTLM 的请求更改 header 并将其转发到 8080 端口上的父代理。

两种情况:您是否拥有管理员权限。

如果你有管理员权限,你可以安装CNTLM它将作为服务安装。有一个“auto-config”安装,你可以在CNTLM的wiki上查看(默认端口:3128)

如果您没有管理员权限,您可以安装NTLM APS (虽然它很旧,但对我有用)
您需要使用您的 NT 域、主机、父代理 + 端口、NTLM_TO_BASIC 1 配置 server.cfg 文件(您可以通过按键盘上的“Windows + 暂停”按钮来获取您的域和主机)默认端口为 5865。

对于 NTLMAPS,您需要 Python(python portable 不需要管理员权限,并更改“runserver.bat”中的值以匹配您的安装)你还需要用 this patch 修补 sourceforge 上的版本因为它有一个 bug with chunked responses

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

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

有时 Microsoft 服务器仍然阻止请求,我需要重新启动本地代理或更改父代理地址。

关于java - Gradle,不在 Windows 上使用 NTLM 代理工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434101/

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