sql-server - 具有集成 SQL 安全性的 Gradle

标签 sql-server maven gradle build.gradle

我目前正在致力于将我们的 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 这个特定的依赖已转换为如下内容:

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 添加到系统配置中。这假设您仍然想引用本地文件,就像使用 Maven 一样:

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

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

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

关于sql-server - 具有集成 SQL 安全性的 Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31614981/

相关文章:

sql-server - 使用多列主键将缺失的行从一个表复制到另一个表

maven - 如何使用本地目录作为第谷构建的目标平台?

java - Eclipse/Maven 和 "Resolve dependencies from workspace projects"不能混合 jar 和源?

java - 即使测试失败,Gradle 也会在测试阶段后执行任务

java - 使用 Gradle 仅编译时依赖项和 ProGuard

Android - 无法解析 : com. android.support :appcompat-v7:26. 0.0

mysql - SQL查询以获取外键内特定状态的所有记录

sql-server - 如何以编程方式确定哪些 SQL 表具有标识列

maven - gradle - 无法从 maven repo 中找到依赖项

sql-server - SQL Server SELECT FOR XML 如何获取同一级别的两个元素