web-dev-qa-db-ja.com

org.springframework全体のMaven依存関係

すべてのorg.springframeworkにMavenの依存関係を設定する方法は?

つまり、すべてのモジュールに依存関係を提供するのではなく、2行でそれを行う方法です。例:

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

等..

ご協力ありがとう御座います

12
sergionni

他の回答に記載されているように、実際に必要なものだけを使用したい。 Spring Webフレームワークが必要な場合は、それを入手してください。ただし、少しの依存関係分析を行い、最高レベルのみを指定することで、pom.xmlにリストされている依存関係のセットを大幅に簡素化および削減できます。必要な依存関係。

したがって、たとえば、次の依存関係があるとします(MavenCentralの代わりにSpringEBRリポジトリのアーティファクトIDを使用していることに注意してください。 違いの詳細についてはこの記事を参照 ):

<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>

ただし、Spring Webのものは実際にはすでにコンテキストライブラリに依存しているため、コンテキスト参照を削除するだけで済みます。

<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>

これにより、Webライブラリの依存関係によって暗黙的に取り込まれるため、特に参照せずにコンテキストライブラリを取得できます。

IDEにIntelliJやm2Eclipseなどがある場合は、依存関係階層の表示、または基本的にUMLチャートである依存関係グラフのいずれかを介して、これらの依存関係をIDEに直接表示できます。

スタンドアロンのMavenの場合、次のことを行うだけだと思います。

mvn dependencies:list

依存関係プラグインの詳細はプラグインサイトにあります。

このアプローチにより、依存関係が非常に明確になり、アプリケーションのフットプリントがはるかに小さくなります。これは基本的に他のすべての人が警告していることですが、pom.xmlにリストする必要のある依存関係の数を減らすことができます。解決する。

5
Spanky Quigman

あなたはそれを次のように行うことができます

<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>
13
subhashis

この回答は新しいバージョン4.X.Xを対象としています

依存関係のバージョンをより効率的に処理したい場合は、<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>
12
Daniel Perník

パッケージ化pomでモジュールを作成し、そこにすべてのSpring依存関係をリストします。 SpringDependenciesのように呼んでください。

次に、各モジュールで、SpringDependenciesモジュールに依存します。これにより、Springのすべての依存関係が推移的にプルされます。

3
Alex Gitelman

方法はありませんし、ないはずです。本当に必要なjarのみを使用する必要があり、allスプリングjarは必要ありません。 2.xの場合、以前はspring.jarしかし、私が見たすべてのプロジェクトで、バージョンの衝突の問題が発生しました。

Springのサブプロジェクトを使用している場合は、Spring 2.5をプルすることがあることに注意してください(たとえば、SpringBatchやSpringWeb Flowもそうだと思います)。この場合、pomでexclusionsタグを使用する必要があります。 xml。

初めて組み立てるのは最も便利ではありませんが、その後は他のプロジェクトで再利用できます。

3
abalogh

Spring 2.xにはそのようなオールインワンモジュールがありましたが、Spring3.xで発生したモジュールのリファクタリングには耐えられませんでした。したがって、答えは「いいえ」です。

2

Mavenの依存関係にはワイルドカードはまったくなく、すべてのSpringモジュールを収集するアーティファクトはもうありません。あなたのプロジェクトは本当にall Springモジュールを使用していますか?

2
Laurent Pireyn

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
1
Akshay Shet