У меня проблема с тем, что gradle почему-то не может установить в приложении зависимости org.apache.logging.log4j.
Ниже приведен мой файл gradle.build,
plugins {
id 'java'
id 'war'
}
group 'com.hf'
version '1.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
}
compileJava {
options.compilerArgs += ["-proc:none"]
}
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.11.0'
providedCompile 'org.hibernate:hibernate-core:5.3.7.Final'
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
Это на первый взгляд просто.У меня -proc: нет, потому что в противном случае возникла проблема с некоторым устареванием.Независимо от того, присутствует ли proc: none в файле Gradle, проблема сохраняется.Вывод gradle.build выглядит следующим образом ...
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :war UP-TO-DATE
> Task :assemble UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
BUILD SUCCESSFUL in 6s
3 actionable tasks: 3 up-to-date
Файлы зависимостей также присутствуют в каталоге кэша, C: \ Users \ MY_USER_NAME.gradle \ caches \ modules-2 \ files-2.1\ org.apache.logging.log4j
, содержащий следующие каталоги: log4j log4j-api log4j-bom log4j-core log4j-jcl log4j-to-slf4j
каждый из которых имеет соответствующий log4jВ них вложены банки.
Проблема в том, что Eclipse не распознает импорт log4j,
введите описание изображения здесь
В результате я могуне скомпилируйте мой простой класс,
package com.hf.config;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* The Config class reduces the amount of magic strings in the application via the
* getProperty method. It has a static string CONFIG_FILE indicating the path to the config file
* which must be set manually
* @version 1.0
*/
public class AppConfig
{
static Logger log = LogManager.getLogger(AppConfig.class.getName());
private static final String CONFIG_FILE = "./app_config.txt";
/**
* Gets a property from the CONFIG_FILE corresponding to propertyName
* @param propertyName
* @return a string value corresponding to propertyName
*/
public static String getProperty(String propertyName)
{
Properties prop = new Properties();
try(InputStream inStream = AppConfig.class.getClassLoader().getResourceAsStream(CONFIG_FILE))
{
if(inStream == null)
{
log.error("config error: did not find file '" + CONFIG_FILE + "', failed to load property " + propertyName);
return null;
}
prop.load(inStream);
return prop.getProperty(propertyName);
} catch(IOException e)
{ e.printStackTrace();
}
log.error("config error: received property request '" + propertyName + "' which does not have a corresponding value in " + CONFIG_FILE);
return propertyName;
}
}
Я очень плохо знаком с gradle, это то, что мы используем на работе, поэтому я пытаюсь включить его в качестве менеджера зависимостей длямой личный проект, чтобы поближе познакомиться с ним.К сожалению, я провел два дня, пытаясь найти решение этой проблемы, и я надеюсь, что кто-то более знающий или опытный может помочь мне решить эту проблему.Спасибо за вашу помощь.