new File(fixtureDir, 'gradle.properties').text = """systemProp.http.proxyHost=proxy.example
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.example
systemProp.https.proxyPort=8080
"""

def result = GradleRunner.create()
    .withProjectDir(fixtureDir)
    .withArguments('assemble')
    .build()

使用 withProjectDir 选定的现有 fixture 目录,连同它的 build/settings 文件一起。把代理属性与 fixture 已有的需求合并;代理主机和端口保持分开。对于被允许的公共仓库下载,HTTP 代理列表 为这些属性提供候选。

插件的构建可以成功,而这一功能测试构建却失败。导入它的测试类并不会复制外层的 gradle.properties,JUnit JVM 上的属性本身也不描述那个独立构建的输入。

TestKit 默认使用隔离的 Gradle 用户主目录,因此开发者平日的私有属性可能并不存在。反过来,命令行 -D 或用户主目录中的属性又会覆盖 fixture 中的条目。

这配置的是 Gradle 仓库请求。若插件启动另一个下载器,或自带私有 HTTP 传输,则可能需要另一条路径。

相关文章