具有集成SQL安全性的Gradle

Cha*_*esC 5 sql-server gradle maven build.gradle

我目前正致力于将我们的一个Maven项目转换为使用Gradle.这是我目前面临的问题:

该项目使用SQL Integrated安全性.以下是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>
Run Code Online (Sandbox Code Playgroud)

运行后,gradle init --type pom 这个特定的dependency转换为这样的东西:

system group: 'com.microsoft.jdbcdriver', name: 'sqljdbc', version:'4.0.1'
Run Code Online (Sandbox Code Playgroud)

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

任何有Gradle SQL集成安全性经验的人都会非常感激.

小智 2

system通过添加配置,可以非常轻松地使用 Gradle 模拟作用域。

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

configurations {
    system.extendsFrom compile
}

sourceSets {
    main {
        compileClasspath = configurations.system
    }
}
Run Code Online (Sandbox Code Playgroud)

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

dependencies {
    system files('libs/sqljdbc-4.0.1.jar')
}
Run Code Online (Sandbox Code Playgroud)

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

dependencies {
    system 'com.microsoft.jdbcdriver:sqljdbc:4.0.1'
}
Run Code Online (Sandbox Code Playgroud)