Как вы используете Maven для обмена исходным кодом для двух проектов? - PullRequest
11 голосов
/ 02 августа 2010

У меня есть большой проект Java Web Application, использующий Maven, и мне нужно запустить новый проект, в котором будет использоваться большая часть того же кода (поэтому мне не нужно повторять работу), но не все.Я собираюсь скопировать общий код в новый проект (назовем его «root»).Как мне сделать мой оригинальный проект зависимым от корня для исходного кода?Я не могу просто испортить его, потому что я хочу изменить исходный код перед компиляцией.

Ответы [ 3 ]

9 голосов
/ 02 августа 2010

Вы должны рефакторинг ваших проектов.

  1. Определите общий код
  2. Извлеките это в свой собственный модуль maven
    2.1. обычно веб-приложения являются мультимодульными, поэтому, если вы собираетесь использовать общую библиотеку в двух веб-приложениях, разделите общую библиотеку на собственный идентификатор группы
  3. Сборка и установка файла jar в ваш репозиторий
  4. изменить количество веб-приложений в зависимости от вашей новой библиотеки
2 голосов
/ 02 августа 2010

Создайте проект maven, который содержит весь ваш общий код.Сохраняйте упаковку этого проекта (в основном pom.xml) как банку.Это поможет сделать этот проект своего рода библиотекой для вашего использования.

Во всех проектах, которые получают доступ к общему коду, добавьте зависимости для этого проекта в соответствии с вашими потребностями.(составить, при условии).

Теперь упакуйте и установите общий проект, прежде чем создавать какой-либо из зависимых проектов.Это добавит общий проект в локальный репозиторий, который затем может быть использован зависимыми проектами.

Добавление примера pom.xml для общих и зависимых проектов.

Общий проект pom.

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <parent>  
    <artifactId>com.myspace.test</artifactId>  
    <groupId>com.myspace</groupId>  
    <version>0.0.1-SNAPSHOT</version>  
  </parent>  
  <groupId>com.myspace</groupId>  
  <artifactId>shared</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
  <name>shared-module</name>  
  <description>shared module which contains code shared by other modules.</description>  
</project>

Pom зависимого проекта.

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <parent>  
    <artifactId>com.myspace.test</artifactId>  
    <groupId>com.myspace</groupId>  
    <version>0.0.1-SNAPSHOT</version>  
  </parent>  
  <groupId>com.myspace</groupId>  
  <artifactId>dependent-module</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
  <name>dependent-module</name>  
  <description>Dependent module.</description>  
  <dependencies>  
    <dependency>  
      <groupId>com.myspace</groupId>  
      <artifactId>shared</artifactId>  
      <version>0.0.1-SNAPSHOT</version>  
      <scope>provided</scope>  
    </dependency>  
  </dependencies>  
</project>

Родительский проект может быть добавлен по желанию, если такая организация требуется.Надеюсь, это поможет.

0 голосов
/ 02 августа 2010

Установите общий код, используя текущие настройки упаковки jar:

mvn install

Затем вы можете создать зависимость в дочернем pom.xml (код, который не является общим) из любого репозитория, который вы используете.устанавливаются в.

В целом, это хорошая практика не только во избежание повторения работы, но и в случае, если вы хотите изменить реализацию общих ресурсов.Вы можете изменить логику в одном месте, установить ее в хранилище, и другие проекты, зависящие от этого кода, будут использовать новый код при следующей компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...