Зависимость Maven для всей организации.springframework
Как установить зависимость Maven для всех org.springframework
?
Я имею в виду,как это сделать в паре строк,вместо предоставления зависимости для каждого модуля, например:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
etc..
спасибо за помощь
8 ответов
как отмечено в других ответах, вы хотите использовать только то, что вам действительно нужно, например, если вам нужна Spring Web framework, тогда получите это. Однако вы можете значительно упростить и уменьшить набор зависимостей, перечисленных в вашем pom.xml, выполнив немного анализа зависимостей и указав только высокий уровень требуемых зависимостей.
например, предположим, что у вас есть следующие зависимости (обратите внимание, что я использую идентификаторы артефактов для репозитория Spring EBR вместо Maven Central; см. в этой статье для получения дополнительной информации о разнице):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.web.servlet</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.transaction</artifactId>
<version>${org.springframework-version}</version>
</dependency>
как это происходит, однако, весенний веб-материал на самом деле уже имеет зависимость от контекстной библиотеки, поэтому вы можете просто удалить контекстную ссылку:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.web.servlet</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.transaction</artifactId>
<version>${org.springframework-version}</version>
</dependency>
Это даст вам контекстную библиотеку без конкретной ссылки на нее, так как она неявно вводится зависимостью в веб-библиотеке.
Если у вас есть IntelliJ или m2eclipse или что-то вроде этого в вашей IDE вы можете получить эти зависимости, отображаемые прямо в IDE, либо через отображение иерархии зависимостей, либо даже в графике зависимостей, который в основном является диаграммой UML.
для автономного Maven, я думаю, вы просто делаете:
mvn dependencies:list
больше о плагине зависимостей находится на сайте плагина.
этот подход сохраняет ваши зависимости очень явными и ваш след приложения намного меньше, что в основном то, что все остальные предупреждают, но могут уменьшить количество зависимостей, которые вы должны перечислить в своем pom.xml, который, я думаю, вы пытаетесь решить.
вы можете сделать это как
<properties>
<org.springframework.version>3.0.5.RELEASE</org.springframework.version>
</properties>
<dependencies>
<!-- Core utilities used by other modules. Define this if you use Spring
Utility APIs (org.springframework.core.*/org.springframework.util.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Expression Language (depends on spring-core) Define this if you use
Spring Expression APIs (org.springframework.expression.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Bean Factory and JavaBeans utilities (depends on spring-core) Define
this if you use Spring Bean APIs (org.springframework.beans.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Aspect Oriented Programming (AOP) Framework (depends on spring-core,
spring-beans) Define this if you use Spring AOP APIs (org.springframework.aop.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Application Context (depends on spring-core, spring-expression, spring-aop,
spring-beans) This is the central artifact for Spring's Dependency Injection
Container and is generally always defined -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Various Application Context utilities, including EhCache, JavaMail,
Quartz, and Freemarker integration Define this if you need any of these integrations -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Transaction Management Abstraction (depends on spring-core, spring-beans,
spring-aop, spring-context) Define this if you use Spring Transactions or
DAO Exception Hierarchy (org.springframework.transaction.*/org.springframework.dao.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context,
spring-tx) Define this if you use Spring's JdbcTemplate API (org.springframework.jdbc.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA,
and iBatis. (depends on spring-core, spring-beans, spring-context, spring-tx)
Define this if you need ORM (org.springframework.orm.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB,
JiBX, Castor, XStream, and XML Beans. (depends on spring-core, spring-beans,
spring-context) Define this if you need OXM (org.springframework.oxm.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Web application development utilities applicable to both Servlet and
Portlet Environments (depends on spring-core, spring-beans, spring-context)
Define this if you use Spring MVC, or wish to use Struts, JSF, or another
web framework with Spring (org.springframework.web.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Spring MVC for Servlet Environments (depends on spring-core, spring-beans,
spring-context, spring-web) Define this if you use Spring MVC with a Servlet
Container such as Apache Tomcat (org.springframework.web.servlet.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Spring MVC for Portlet Environments (depends on spring-core, spring-beans,
spring-context, spring-web) Define this if you use Spring MVC with a Portlet
Container (org.springframework.web.portlet.*) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Support for testing Spring applications with tools such as JUnit and
TestNG This artifact is generally always defined with a 'test' scope for
the integration testing framework and unit testing stubs -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework.version}</version>
<scope>test</scope>
</dependency>
этот ответ направлен на новую версию 4.Х. Х
Если вы хотите более эффективно обрабатывать версии зависимостей, используйте этот код перед вашим <dependencies></dependencies>
теги.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
преимущества использования BOM заключается в том, что вам больше не нужно указывать версию зависимости. Поэтому ваши зависимости должны выглядеть так:
<dependencies>
<!-- Spring framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
создать модуль с упаковкой pom
и перечислите все весенние зависимости там. Назовите это чем-то вроде SpringDependencies
.
тогда в каждом из ваших модулей, зависит от SpringDependencies
модуль. Это временно вытянет все зависимости Spring.
нет никакого способа, и его не должно быть. Вы должны использовать только банки, которые вам действительно нужны, не нужно все весна банок. Для 2.x раньше был spring.jar
но в каждом проекте, который я видел, это вызвало проблемы с столкновением версий.
Если вы используете какие-либо подпроекты из Spring, посмотрите, что иногда они все еще тянут Spring 2.5 (например, Spring Batch, и я думаю, что Spring Web Flow), в этом случае вы должны использовать exclusions
тег в ПФЛ.XML.
не самый удобный для того чтобы собрать его в первый раз, а затем вы можете повторно использовать в других проектах.
в зависимостях Maven нет никаких подстановочных знаков, и нет артефакта, который собирает все модули Spring. Ваш проект действительно использует все
весной 2 был такой модуль "все-в-одном".x, однако он не пережил рефакторинг модуля, произошедший весной 3.х. Итак, ответ "Нет".
Spring-context внутренне разрешает другие зависимости. Пожалуйста, найдите ниже дерево зависимостей.
[INFO] com.example:springpractice:jar:1.0-SNAPSHOT
[INFO] \- org.springframework:spring-context:jar:4.3.7.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:4.3.7.RELEASE:compile
[INFO] +- org.springframework:spring-beans:jar:4.3.7.RELEASE:compile
[INFO] +- org.springframework:spring-core:jar:4.3.7.RELEASE:compile
[INFO] | \- commons-logging:commons-logging:jar:1.2:compile
[INFO] \- org.springframework:spring-expression:jar:4.3.7.RELEASE:compile