Gradle включает jar во время компиляции, но исключает время выполнения - PullRequest
0 голосов
/ 03 августа 2020

Я использую локальные банки, и мне нужно javaee-api-6.0.jar во время компиляции, но я хочу исключить его во время выполнения.

dependencies {
 
    // Add all the jar dependencies from the lib folder. 
    compile fileTree(dir: '../lib', include: ['/**/*.jar'])
    
   //testImplementation fileTree(dir: '../lib', excludes: ['/**/javaee-api-*.jar'])
}

Я пытался исключить его во время testImplementation, но это не так Помогите. время выполнения Я получил ошибку ниже.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'mycompany.persistence.HibernateBackwardsCompatibilifier#0' defined in class path resource 
[hibernateBeans.xml]: Instantiation of bean failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[mycompany.persistence.HibernateBackwardsCompatibilifier]: Constructor threw exception; nested 
exception is java.lang.ClassFormatError: Absent Code attribute in method that is not native or
 abstract in class file javax/persistence/PersistenceException

Как я могу включить jar во время компиляции, но исключить время выполнения

Ответы [ 2 ]

1 голос
/ 03 августа 2020

compileOnly - для зависимостей, которые необходимы для компиляции вашего производственного кода, но не должны быть частью пути к классам среды выполнения

см. https://docs.gradle.org/current/userguide/building_java_projects.html#sec: java_dependency_management_overview

0 голосов
/ 03 августа 2020

Я использовал трюк ниже.

dependencies {

compile fileTree(dir: '../lib', exclude: ['/**/javaee-api-*.jar'], include: ['/**/*.jar'])
    
compileOnly fileTree(dir: '../lib', include: ['/**/javaee-api-*.jar'])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...