Я потратил целый день, пытаясь решить эту проблему ... и, наконец, это работает, поэтому, хотя у меня сложный график, я поделюсь им здесь, если только смогу спасти чье-то разочарование в будущем ...
Шаг 1 .Создайте дополнительный проект Maven, который будет родительским для всех проектов, которые вы хотите скопировать вместе.Давайте назовем этот проект parent
.
Этот проект необходим, чтобы сообщить Maven, какие проекты нужно строить вместе.Кроме того, вы будете объявлять в других своих проектах, что их родительский элемент - parent
, поэтому они увидят свойство MyDir
, которое вы здесь определите.
<groupId>com.your.domain</groupId>
<artifactId>parent</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<properties>
<MyDir>/your/path/to/copy/to</MyDir>
</properties>
<modules>
<module>../project1</module>
<module>../project2</module>
<module>../project2</module>
</modules>
Шаг 2 .Для каждого проекта, который вы хотите скопировать в одно и то же место, укажите, что его родитель является проектом parent
(убедитесь, что вы указали правильный groupId и artifactId и версию вашего родительского проекта):
<parent>
<groupId>com.your.domain</groupId>
<artifactId>parent</artifactId>
<version>0.0.1</version>
<relativePath>../parent</relativePath>
</parent>
А также для каждого из этих проектов также укажите параметры подключаемых модулей jar и зависимостей, например:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<outputDirectory>${MyDir}</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.your.domain.Program</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${MyDir}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Затем просто запустите mvn install
в родительском проекте.Bam!
PS Выше предполагается, что все проекты находятся в одном каталоге (родительский проект рядом с дочерними), но вы можете изменить относительные пути по своему желанию.