Spring & Hibernate Maven Building

Имам сравнително прост въпрос относно сборките на maven за пролет и хибернация.

Да кажем, че имам проект A, при който всички буркани са добавени към библиотеката от IDE по време на конфигурацията на проекта по време на настройка - нямаше Maven POM. Предполага се, че всичко в този проект работи без проблем.

Сега вземете проект B. Този проект ще повтори проект A, но ще бъде конфигуриран с помощта на Maven POM.

Въпросът ми идва в етапа на конфигуриране на зависимостта. Вземете това изображение

Проект A JAR Lib

За да репликирам lib на проект A, необходимо ли е ръчно да прегледам списъка с добавени JAR поотделно, да намеря корелиращата зависимост от maven в MVN Repo и след това да ги добавя към проекта POM на проект B? Или има "по-спретнат" начин за изграждане на основен пролетен набор от зависимости с помощта на maven.

Извинения, ако този въпрос изглежда тривиален, все още съм в начален етап на изграждане с Maven POM.

Много благодаря.


person Php Pete    schedule 05.03.2015    source източник


Отговори (4)


Ще бъдете прави, че в момента няма останало хранилище (за което знам!), което да има „всички пролетни зависимости“. Ето защо бихте дефинирали свойство на Maven за вашата версия на Spring и го използвате като контейнер за всички ваши зависимости на Spring.

Освен това може да не е необходимо да добавяте ВСИЧКИ от тези JAR файлове, тъй като някои от тях идват заедно с друг (уеб идва с webmvc, iirc).

Пример: Над (или под) вашите зависимости бихте използвали нещо подобно:

<properties>
    <spring.version>4.1.5.RELEASE</spring.version>
</properties>

След това, когато добавяте вашите зависимости, можете да използвате следното:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
person Schaka    schedule 05.03.2015
comment
Здравей Шака, би ли разяснил какво искаш да кажеш - дефиниране на свойство maven за вашата пролетна компилация? Може ли това да се генерира автоматично по някакъв начин? - person Php Pete; 05.03.2015

Това беше интересен въпрос за мен, но за съжаление няма решение (или не мога да го намеря). Вижте тези връзки:

http://maven.apache.org/ref/3.0.4/maven-model-builder/super-pom.html

http://maven.apache.org/ref/3.0.4/maven-model-builder/

Замяна на супер POM със супер/родителски POM за цялата компания

person degr    schedule 05.03.2015

Можете да използвате spring-framework-bom, както следва:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>4.0.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
    </dependency>

    ...
<dependencies>

Или можете да декларирате свойство pom с пролетната версия:

<properties>
    <spring-version>4.0.1.RELEASE</spring-version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring-version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring-version}</version>
    </dependency>

    ...
<dependencies>

Можете да намерите най-често срещаните зависимости тук: http://spring.io/blog/2009/12/02/obtaining-spring-3-artifacts-with-maven/

person Marcelo Keiti    schedule 05.03.2015
comment
Bom е просто начин за облекчаване на управлението на зависимостта, напр. управление на версиите на зависимостите, но няма да изтегли временно зависимостите към вашия проект - person Gab; 05.03.2015
comment
Да, прав си. Просто коригирам отговора си. Благодаря - person Marcelo Keiti; 05.03.2015

Страхувам се, че очакваният начин наистина е да се намери артефактът maven за всяка зависимост.

Има много хубав сайт за това: http://mvnrepository.com/

В противен случай можете наистина да изградите „основен набор от зависимости на пролетта“, като създадете модул с pom опаковки, изброяващ всичките ви зависимости на пролетта, и конфигурирате родителския си проект да зависи от този модул, но няма реален интерес да правите това IMHO.

Модулността е чудесно нещо (по дяволите, проблемите със сблъсъка на версиите са излишен проблем на java приложение и трябва да запазите възможно най-фината детайлност, ако искате да избегнете игра с изключване на зависимост от maven)

person Gab    schedule 05.03.2015
comment
Благодаря Габ. Запознат съм с mvnrepository! Значи имате предвид да създам отделен проект на Maven POM и другите ми проекти да наследят от това? Звучи ми добре! - person Php Pete; 05.03.2015
comment
Да, схванахте идеята, но отново не мисля, че е добър, защото вашият проект може вече да е организиран в различен модул, който може да не се нуждае от всички зависимости на пролетната рамка. Ако пролетните момчета са го опаковали така, а не като цяло, има основателни причини. - person Gab; 05.03.2015