Я думаю, что то, что вы описали, возможно. Сначала создайте родительский POM, в котором вы объявляете зависимости в элементе <dependencyManagement>
:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>groupIdA<groupId>
<artifactId>parent</artifactId>
<packaging>pom<packaging>
<version>1-SNAPSHOT</version>
...
<dependencyManagement>
<!-- Standard dependencies used in several build modules. Ensures all modules
use the same version for these dependencies -->
<dependencies>
<dependency>
<groupId>org.directwebremoting</groupId>
<artifactId>dwr</artifactId>
<version>3.0.M1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
...
</dependencies>
<dependencyManagement>
...
</project>
Затем в дочернем проекте объявите необходимые зависимости, не объявляя их версию:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>parent</artifactId>
<groupId>groupIdA</groupId>
<version>1-SNAPSHOT</version>
</parent>
<artifactId>childB</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.directwebremoting</groupId>
<artifactId>dwr</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
...
</dependencies>
...
</project>
Наконец, используйте предопределенный дескриптор сборки по умолчанию jar-with-dependencies
, чтобы создать общую сборку двоичного пакета со всеми включенными библиотеками зависимостей, распакованными внутри архива .
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- append to the packaging phase. -->
<goals>
<goal>single</goal> <!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
[...]
</plugins>
</build>
</project>
Чтобы создать сборку проекта, запустите пакет phase:
mvn package
И это даст следующую сборку в целевой директории:
target/child-1.0-SNAPSHOT-jar-with-dependencies.jar
Я просто не уверен, что вы хотите сделать с этой сборкой (используйте ее как зависимость в проектах портлетов по сравнению с зависимостями pull из родительского POM? Упростите только развертывание liferay?). Все варианты возможны, хотя.
Подробнее см. В документации по для подключаемого модуля *1026* Maven.