Пытаюсь создать простой проект Gradle Java в моем Eclipse. Я использую библиотеку LOG4J, поэтому мой build.gradle выглядит так:
plugins {
// Apply the java-library plugin to add support for Java Library
id 'java-library'
}
repositories {
// Use jcenter for resolving dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.3'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.3'
// This dependency is exported to consumers, that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'
// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:28.2-jre'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
Я добавил в этот файл две строки, которые, как я ожидаю, позволят загрузить библиотеку log4j:
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.3'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.3'
Но, похоже, это не помогает, потому что в случае, если я создаю проект с помощью gradle, у меня есть ошибки компиляции.
The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation or api configuration instead. Consult the upgrading guide for further information: https://docs.gradle.org/6.3/userguide/upgrading_version_5.html#dependencies_should_no_longer_be_declared_using_the_compile_and_runtime_configurations
at build_d9ael385qeshfiepcaw3797hi$_run_closure2.doCall(/home/a/Documents/workspace-sts/l4j/build.gradle:21)
(Run with --stacktrace to get the full stack trace of this deprecation warning.)
> Task :compileJava FAILED
Полагаю, я объявил log4j устаревшим способом (я взял эти строки из руководства log4j). Но как объявить log4j
в build.gradle
, чтобы использовать их в моем проекте?
Команда сборки:
./gradlew build --refresh-dependencies --warning-mode all
И мой основной класс:
package l4j;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class aa {
static Logger logger = Logger.getLogger(Log4jPropertiesConfigurationExample.class);
public static void main(String[] args)
{
//PropertiesConfigurator is used to configure logger from properties file
PropertyConfigurator.configure("log4j.properties");
//Log in console in and log file
logger.debug("Log4j appender configuration is successful !!");
}
}
1 ответ
Полагаю, я объявил log4j устаревшим способом (я взял эти строки из руководства log4j).
Тот факт, что в руководстве / документации говорится, что это нужно делать одним способом, не обязательно означает, что это правильно или правильно. Документация, вероятно, была написана в то время, когда конфигурация compile
не считалась устаревшей. С введением конфигураций implementation
и api
отпала необходимость в конфигурации compile
.
Просто переключите compile
на реализацию, и предупреждение об устаревании исчезнет.
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.3'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.3'
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.