すべてのorg.springframework
にMavenの依存関係を設定する方法は?
つまり、すべてのモジュールに依存関係を提供するのではなく、2行でそれを行う方法です。例:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
等..
ご協力ありがとう御座います
他の回答に記載されているように、実際に必要なものだけを使用したい。 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にリストする必要のある依存関係の数を減らすことができます。解決する。
あなたはそれを次のように行うことができます
<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.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>
パッケージ化pom
でモジュールを作成し、そこにすべてのSpring依存関係をリストします。 SpringDependencies
のように呼んでください。
次に、各モジュールで、SpringDependencies
モジュールに依存します。これにより、Springのすべての依存関係が推移的にプルされます。
方法はありませんし、ないはずです。本当に必要なjarのみを使用する必要があり、allスプリングjarは必要ありません。 2.xの場合、以前はspring.jar
しかし、私が見たすべてのプロジェクトで、バージョンの衝突の問題が発生しました。
Springのサブプロジェクトを使用している場合は、Spring 2.5をプルすることがあることに注意してください(たとえば、SpringBatchやSpringWeb Flowもそうだと思います)。この場合、pomでexclusions
タグを使用する必要があります。 xml。
初めて組み立てるのは最も便利ではありませんが、その後は他のプロジェクトで再利用できます。
Spring 2.xにはそのようなオールインワンモジュールがありましたが、Spring3.xで発生したモジュールのリファクタリングには耐えられませんでした。したがって、答えは「いいえ」です。
Mavenの依存関係にはワイルドカードはまったくなく、すべてのSpringモジュールを収集するアーティファクトはもうありません。あなたのプロジェクトは本当にall Springモジュールを使用していますか?
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