Поскольку вы переходите на Gradle, я бы порекомендовал настроить ваш classpath в самом Gradle. Предпочтительным способом управления зависимостями в Gradle (как вы, возможно, уже знаете) является использование репозитория зависимостей (Maven или Ivy), а затем определение его из вашего dependencies
закрытия для каждого из ваших проектов gradle
dependencies{
compile 'commons-lang:commons-lang:2.2'
compile 'log4j:log4j:1.2.16'
...
}
Однако, если вам нужно обратиться к локальным файлам jar, у вас есть несколько других вариантов:
1) Настройте свой собственный репозиторий Maven или Ivy
На начальном этапе это довольно трудоемкая работа, но в долгосрочной перспективе она может оказаться более полезной.
Добавьте это к вашему build.gradle
repositories {
flatDir{
dirs 'lib'
}
}
Поместите ваши jars / wars в папку lib в этом формате <name>-<version>.jar
или просто <name>.jar
:
e.g.
lib/acme-1.2.3.jar
lib/acme.jar
Тогда вы можете ссылаться на него, как обычно:
dependencies{
...
compile 'acme:acme:1.2.3'
...
}
Примечание: Для поиска файла используются только имя и версия зависимости, и транзитивные зависимости не предполагаются.
Например:
dependencies{
...
compile file("../../${project.name}Model/${project.name}Model.jar")
compile fileTree(dir: '../../${project.name}Model', include: '**/*.jar')
...
}
Примечание: ${project.name}
разрешит имя вашего проекта gradle .
Все файлы jar, добавленные в конфигурацию compile
, будут автоматически доступны для задач компиляции по умолчанию, таких как classes
и jar
. Вы можете создать пользовательскую задачу Compile , чтобы заменить текущую ant.javac(...)
задачу следующим образом:
task compileSomething(type: Compile){
source = file("${compileSourcecode}")
destinationDir = file("WebContent/WEB-INF/classes")
sourceCompatibility = "${compileSourceversion}"
targetCompatibility = "${compileTargetversion}"
options.verbose = "${compileVerbose}".toBoolean()
options.debug = "${compileDebug}".toBoolean()
options.optimize = "${compileOptimize}".toBoolean()
options.deprecation = "${compileDeprecation}".toBoolean()
classpath = configurations.compile
// or
classpath = files('lib/library1.jar')
// or any combination
classpath = configuraions.compile + files('lib/library1.jar')
}
Примечание: Не думаю, что вы можете установить includeAntRuntime
, но я думаю, что по умолчанию установлено true
.
Конечно, вы можете сохранить список файлов в переменной для более детального повторного использования:
libs = files('lib/library1.jar', 'lib/library2.jar')
dependencies{
compile libs
}
task compileSomething(type: Compile){
classpath = libs
}
Надеюсь, это поможет.