У maven нет весенней версии 3 или версии 4?

Я пытался запустить устаревший проект, используя весеннюю версию 3 с build.gradle:

...
plugins {
    id 'java'
    id 'maven-publish'
    id 'war'
}

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}

ext {
    org_springframework_version = '3.2.18.RELEASE'
}

dependencies {
...
    implementation 'org.springframework.ldap:spring-ldap-core:2.4.1'
    implementation "org.springframework:spring-web:${org_springframework_version}"
    implementation "org.springframework:spring-webmvc:${org_springframework_version}"
    implementation "org.springframework:spring:${org_springframework_version}"
...
}
...

но получая следующую ошибку при попытке сборки:

Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not find org.springframework:spring:3.2.18.RELEASE.
     Searched in the following locations:
       - file:/C:/Users/.../.m2/repository/org/springframework/spring/3.2.18.RELEASE/spring-3.2.18.RELEASE.pom
       - https://repo.maven.apache.org/maven2/org/springframework/spring/3.2.18.RELEASE/spring-3.2.18.RELEASE.pom
     Required by:
         project :

Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html

Я проверил https://repo.maven.apache.org/maven2/org/springframework/spring/ и похоже, что в репозитории нет Spring 3 или 4.

Я не могу использовать более новую версию Spring, так как в проекте есть множество других зависимостей и устаревшего кода, которые следует оставить как есть.

Я смущен тем, почему это так или как построить мой проект сейчас. Любая помощь приветствуется.

PS. Немного предыстории: у меня есть устаревший проект, основанный на очень старой технологии (фреймворк Stripes), который прямо отказывается работать с Spring 5+. Сейчас он работает на Java 6. Я хочу обновить его до java 8. Но зависимость от spring 2.x не позволяет мне это сделать.

Есть ли конкретная причина не использовать репозиторий mavenCentral()?

1615903 21.11.2022 07:05

Тем не менее, использование repositories { mavenLocal() mavenCentral() } вызывает ту же проблему. Я делаю что-то неправильно?

Tameem Khan 21.11.2022 07:09

Полной весенней банки уже давно нет в наличии. Так что да, нет и никогда не было выпусков 3 и 4 spring.jar и сейчас нет, поскольку он содержит только pom.xml. Поэтому удалите зависимость spring и замените ее чем-то вроде spring-context-support в зависимости от ваших потребностей. Также используйте mavenCentral() вместо жестко заданного URL-адреса в своем репо.

M. Deinum 21.11.2022 07:16

Как я уже говорил, полная банка Spring больше не доступна с Spring 2.5. Этого больше нет и никогда не будет, как указано, включая отдельные модули из Spring, которые вам нужны.

M. Deinum 29.11.2022 09:37
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Сортировка hashmap по значениям
Сортировка hashmap по значениям
На Leetcode я решал задачу с хэшмапой и подумал, что мне нужно отсортировать хэшмапу по значениям.
Принципы SOLID - лучшие практики
Принципы SOLID - лучшие практики
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип...
gRPC на Android с использованием TLS
gRPC на Android с использованием TLS
gRPC - это относительно новая концепция взаимодействия между клиентом и сервером, но не более.
0
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Полноценный spring.jar недоступен с Spring Framework 3.0.0. Spring 2.5.6 — последний, в котором есть полная банка Spring. С тех пор были доступны только меньшие модули.

Версии для 5.x, которые вы видите, представляют собой только некоторые файлы верхнего уровня pom.xml, которые, я предполагаю, были опубликованы случайно (а для 6.x их больше нет).

Короче говоря, удалите следующую строку из ваших зависимостей

implementation "org.springframework:spring:${org_springframework_version}"

Таким образом, он больше не пытается решить то, что недоступно с Spring 2.5.6. Что вы должны включить, так это зависимости для необходимых вам модулей (что-то вроде зависимостей ниже).

implementation "org.springframework:spring-web:${org_springframework_version}"
implementation "org.springframework:spring-webmvc:${org_springframework_version}"
implementation "org.springframework:spring-jdbc:${org_springframework_version}"
implementation "org.springframework:spring-orm:${org_springframework_version}"
implementation "org.springframework:spring-oxm:${org_springframework_version}"

В качестве дополнительного примечания заменить

maven {
        url = uri('https://repo.maven.apache.org/maven2/')
}

с

mavenCentral()

Это позволит Gradle выбрать наиболее подходящее зеркало Maven для вашей среды.

Что делать, если я хочу использовать Spring 3.x или 4.x? У меня есть устаревший проект, основанный на действительно старой технологии (фреймворк Stripes), который прямо отказывается работать с Spring 5+. Сейчас он работает на Java 6. Я хочу обновить его до java 8. Но зависимость от spring 2.x не позволяет мне это сделать.

Tameem Khan 29.11.2022 09:32

Где я могу сказать, что вы не можете использовать Spring 3 или 4? Я утверждаю, что вам нужно включить отдельные модули и удалить всеохватывающую зависимость, поскольку ее просто больше не существует!

M. Deinum 29.11.2022 09:37
include the indivudual modules - это на самом деле сбивает меня с толку, как это сделать. я имею в виду, я должен загрузить его откуда-то и объявить в build.gradle? или я могу включить зависимость в какие-то другие средства? (для весны 4.x)
Tameem Khan 29.11.2022 09:41

Вы включаете его, как уже делали с spring-web или spring-webmvc. Вы уже включили эти модули в свой build.gradle, просто добавьте другие модули, которые вам нужны.

dunni 29.11.2022 09:43

Хорошо, если я объявлю это как implementation 'org.springframework:spring:4.3.30.RELEASE', я получаю ошибку градиента: Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find org.springframework:spring:4.3.30.RELEASE. Searched in the following locations:... ... Я что-то здесь упустил? Вы уже сказали, что их больше не существует...(?) Так что включение их таким образом не должно работать, верно?

Tameem Khan 29.11.2022 09:48

В третий раз удалите всеохватывающую зависимость... Я прямо заявляю, что вам нужно удалить эту зависимость в моем ответе, и вы продолжаете пихать ее туда.

M. Deinum 29.11.2022 09:49

Итак, используйте spring-web, spring-webmvc, spring-jdbc и т. д., но не spring. Извините, что так медленно.

Tameem Khan 29.11.2022 09:52

Точно... Выясните, какие модули вам нужны, и включите их. Включил это в ответ.

M. Deinum 29.11.2022 09:53

подсказка: зависимость «spring» была переименована в «spring-core» (но, возможно, были разделены меньшие биты).

jwenting 29.11.2022 09:59

Зависимость spring не была переименована в spring-core. spring-core — это лишь небольшое подмножество того, что было в модуле spring (который включал в себя все, кроме материалов, связанных с Интернетом).

M. Deinum 29.11.2022 10:05

Другие вопросы по теме