Как Вы используете Знатока для совместного использования исходного кода для двух проектов?

У меня есть большой проект веб-приложения Java использование Знатока, и я должен запустить новый проект, который совместно использует большую часть того же кода (таким образом, я не должен буду повторять работу), но не все это. Я собираюсь скопировать общий код в новый проект (давайте назовем его "корнем"). Как я заставляю свой исходный Проект зависеть от, поддерживают исходный код? Я не могу только сотрясать его, потому что я хочу изменить источник перед компиляцией.

14
задан Adam L Davis 3 August 2010 в 14:57
поделиться

3 ответа

Вам следует провести рефакторинг ваших проектов.

  1. Определите общий код
  2. Распакуйте его в собственный модуль maven
    2.1. обычно веб-приложения являются многомодульными, поэтому, если вы собираетесь использовать общую библиотеку в двух веб-приложениях, выделите общую библиотеку в ее собственный идентификатор группы
  3. Создайте и установите файл jar в свой репозиторий
  4. изменить помпы веб-приложений в зависимости от вашей новой библиотеки
10
ответ дан 1 December 2019 в 14:43
поделиться

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

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

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

Добавление примера 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>

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

2
ответ дан 1 December 2019 в 14:43
поделиться

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

mvn install

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

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

0
ответ дан 1 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: