Gradle 具有集成 SQL 安全性

Gradle with Integrated SQL Security

我目前正在努力将我们的 Maven 项目之一转换为使用 Gradle。 这是我目前面临的问题:

此项目正在使用 SQL 集成安全性。下面是 Maven 的处理方式(我们花了一些时间才弄明白):

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/sqljdbc4.jar</systemPath>
    </dependency>

在 运行 gradle init --type pom 之后 这个特定的 dependency 已经转换成这样的东西:

system group: 'com.microsoft.jdbcdriver', name: 'sqljdbc', version:'4.0.1'

这是不对的。 Gradle 无法构建。更具体地说,system 范围甚至不存在于 Gradle 的 API 中(我也没有在任何第三方 Gradle 插件中找到它)。

任何在 Gradle SQL 集成安全方面有任何经验的人都将不胜感激。

通过添加配置可以很容易地用 Gradle 模拟作用域 system

创建配置 system 并将其设置为编译类路径。添加到 system 的任何依赖项现在在编译期间可用(尽管我怀疑您需要特定的 JDBC 驱动程序进行编译),但是 system 中的依赖项不会添加到已发布的依赖项中模块的:

configurations {
    system.extendsFrom compile
}

sourceSets {
    main {
        compileClasspath = configurations.system
    }
}

现在您可以轻松地将 JDBC 驱动程序的 JAR 添加到 system 配置中。这假设您仍然想像使用 Maven 一样引用本地文件:

dependencies {
    system files('libs/sqljdbc-4.0.1.jar')
}

但是如果您在(本地)存储库中有 JAR,最好使用存储库:

dependencies {
    system 'com.microsoft.jdbcdriver:sqljdbc:4.0.1'
}