2015-07-24 3 views
5

В настоящее время я работаю над преобразованием одного из наших проектов Maven для использования Gradle. Вот вопрос, я в настоящее время сталкивается:
Gradle with Integrated SQL Security

Этот проект использует SQL Integrated Security. Вот как 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' 

который не является правильным. Грейдл не может построить. Более конкретно, область system даже не существует в API Gradle (ни я не нашел ее в стороннем плагине Gradle).

Любая помощь, у которой был опыт работы с интегрированной безопасностью Gradle SQL, будет высоко оценена.

ответ

2

Очень легко эмулировать область действия system с помощью Gradle, добавив конфигурацию.

Создайте конфигурацию system и установите ее как путь к классу компиляции. Любая зависимость добавлена ​​system теперь будет доступна во время компиляции (хотя я сомневаюсь, что вам нужен специальный драйвер JDBC для компиляции), но зависимости в system не будет добавлена ​​в опубликованных зависимости модуля:

configurations { 
    system.extendsFrom compile 
} 

sourceSets { 
    main { 
     compileClasspath = configurations.system 
    } 
} 

сейчас вы можете легко добавить JAR драйвера JDBC в конфигурацию system. Это предполагает, что вы все еще хотите, чтобы ссылаться на локальный файл так же, как с Maven:

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

Но если у вас есть JAR в (локальном) хранилище, то лучше использовать репозиторий:

dependencies { 
    system 'com.microsoft.jdbcdriver:sqljdbc:4.0.1' 
} 
Смежные вопросы