Spring 3.0 için hangi maven bağımlılıkları eklenmeli?


114

İlk projemi Spring 3.0 (ve maven) ile yapmaya çalışıyorum. Spring 2.5 (ve primer versiyonları) pek çok projede kullanıyorum. Yine de, pom.xml dosyamda hangi modülleri bağımlılıklar olarak tanımlamam gerektiği konusunda biraz kafam karıştı. Ben sadece temel kapsayıcı işlevlerini (fasulye, çekirdek, bağlam, el) kullanmak istiyorum.

Bunu yapmaya alışkınım:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6</version>
</dependency>

Ama şimdi 3.0 sürümü için tam dolu yay modülü olmadığı için kafam biraz karıştı. Aşağıdakileri denedim ama işe yaramadı (bazı dersler eksik).

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>

Herhangi bir yardım memnuniyetle karşılanacaktır!


Aslında ikinci kod örneğinde belirtildiği gibi çalışır. Diğer bazı konular kafamı karıştırdı. Gereksiz soru için özür dilerim. Soruyu yine de saklamanızı tavsiye ederim, çünkü belki de insanlar 2.5'ten 3.0'a geçerken aynı sorunu yaşayacaklar.
Nils Schmidt

Yanıtlar:


227

Üzerinde gerçekten güzel bir mesaj vardı İlkbahar Blog belgede; detaylandırma Keith Donald'ndan Maven ile Bahar 3 Aritfacts Edinme Eğer bağımlılıkları her gerekiyordu esnasında notlar detaylarla, ...

<!-- Shared version number properties -->
<properties>
    <org.springframework.version>3.0.0.RELEASE</org.springframework.version>
</properties>
<!-- 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>

3
Teşekkürler, aslında bağlantıyı birkaç gün önce bulup kaybettiğim için tekrar aramak zorunda kaldım .. Burada olması, insanları bulmanın muhtemelen Bahar Blogundan daha kolay olduğu anlamına geliyor ..
Tim

Ve 4. Bahar için Spring Boot
Tim

29

Spring (günümüzde), yalnızca bir bağımlılık kullanarak Spring'i bir projeye eklemeyi kolaylaştırır, örn.

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>3.1.2.RELEASE</version>
</dependency> 

Bu çözülecek

[INFO] The following files have been resolved:
[INFO]    aopalliance:aopalliance:jar:1.0:compile
[INFO]    commons-logging:commons-logging:jar:1.1.1:compile
[INFO]    org.springframework:spring-aop:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-asm:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-beans:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-context:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-core:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-expression:jar:3.1.2.RELEASE:compile

Göz at Bahar Çerçeve dokümantasyon fazla bilgi için sayfa.


Benim check out - nedeniyle yolu Maven bağımlılık çözünürlüğü işler (kısa yol) ait, hem de projede Bahar güvenlik varsa Bu yaklaşım sorunlu olabilir Maven'in ile Bahar güvenlik Madde
Eugen

1
@Eugen İyi nokta. Bu durumda , desteklenen "yay çekirdekli" yapıları doğru sürümlerle (ne yazık ki en son kararlı sürüm değil) çözen yay güvenliği yapaylıklarını beyan etmek daha iyi olacaktır .
FrVaBe

3
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.0.0.RELEASE</version>
</dependency>

2

Bu sorular hala oldukça fazla görüş alıyor gibi göründüğünden, Spring 4+ için kullanmaya başlamanın en kolay yol olduğunu Spring Bootve Spring Boot başlangıç ​​POM'larını not etmek faydalı olabilir .

Spring Boot'u kullanmak, yönetmek için daha az bağımlılık (ve dolayısıyla daha az çatışma) vardır ve çalışan, iyi entegre edilmiş bir Spring Context kurmak çok daha kolaydır. Şiddetle tavsiye ederim.


1

Hangi sınıflar eksik? Sınıf adının kendisi, eksik modül için iyi bir ipucu olmalıdır.

Bilginize, uber yaylı kavanozu dahil etmenin gerçekten uygun olduğunu biliyorum, ancak bu gerçekten diğer projelerle entegre olurken sorunlara neden oluyor. Bağımlılık sisteminin arkasındaki faydalardan biri, bağımlılıklar arasındaki sürüm çatışmalarını çözecek olmasıdır.

Kitaplığım yay-çekirdek: 2.5'e bağlıysa ve kitaplığıma ve uber-yay: 3.0'a bağlıysanız, artık sınıf yolunuzda 2 yay sürümüne sahipsiniz.

Bunu dışlamalarla aşabilirsiniz, ancak bağımlılıkları doğru bir şekilde listelemek ve bunun için endişelenmenize gerek kalmadan çok daha kolaydır.


1

Yaylı kavanozlar için yay bağlamı bağımlılığı ekleyebilirsiniz . Aşağıdaki kavanozları da beraberinde alacaksınız.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>

Yay bağlam bağımlılıkları

Web bileşenlerini de istiyorsanız, spring-webmvc bağımlılığını kullanabilirsiniz.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>

Spring webmvc bağımlılıkları

İstediğiniz herhangi bir sürümünü kullanabilirsiniz. 5.0.5.RELEASE'i burada kullandım.


0

Bunu deneyebilirsin

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>
</dependencies>`

0

Sürüm sorunlarını çözmek için bir ürün reçetesi kullanın.

Üçüncü taraf bir kitaplığın veya başka bir Spring projesinin, daha eski bir sürüme geçişli bir bağımlılık çektiğini görebilirsiniz. Doğrudan bir bağımlılığı kendiniz açıkça beyan etmeyi unutursanız, her türlü beklenmedik sorun ortaya çıkabilir.

Bu tür sorunların üstesinden gelmek için Maven, "malzeme listesi" (BOM) bağımlılığı kavramını desteklemektedir.

https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/html/overview.html#overview-maven-bom

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-framework-bom</artifactId>
  <version>3.2.12.RELEASE</version>
  <type>pom</type>
</dependency>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.