在项目下的子目录中,我有一个我编写和维护的代码库模块,必须与较大项目中的其他模块共享。为方便起见,它与所有消耗它的模块同时开发。
Repeat
$listRef:=New list
CLEAR LIST($listRef;*)
Until (<>crashed_or_quit)
由于我们的构建在离开后如何完成的复杂原因,我们不希望它部署到构建主机的本地Maven存储库(project
libs
module-A
module-B
module-N
library-module
)。相反,我们希望它位于项目本地的子目录中,此处为 ~/.m2/repository
。
从命令行,我知道以下内容将把它放到本地Maven存储库中,但是我不想从命令行执行此操作,并且我不希望结果转到本地Maven存储库。我希望在library-module子目录中的构建系统运行libs
时发生这种情况。
mvn install
(请注意,我正在寻找的答案不依赖于IDE。)
答案 0 :(得分:0)
为了满足提供的要求,需要两个配置步骤:
skip
install-file
目标,以便将其作为构建的一部分(因此无需从命令行手动调用它)以下配置将提供:
<properties>
<library.repository.folder>../libs</library.repository.folder>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>install-artifact</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>${project.packaging}</packaging>
<file>${project.build.directory}/${project.build.finalName}.${project.packaging}</file>
<localRepositoryPath>${library.repository.folder}</localRepositoryPath>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
请注意library.repository.folder
属性用于指向所需的目标lib
文件夹(如果路径不同,则更改)。上面提供的配置使用标准maven属性(用于项目坐标和包装),但您可以根据需要更改它们(或硬编码实际值)。
另请注意,install-file
目标将在lib
文件夹下重新创建与本地存储库(lib \ groupId \ artifactId \ version \ file.jar)相同的文件夹结构。如果您希望将文件直接放在lib文件夹(lib \ file.jar)下,则可以转到以下配置:
<properties>
<library.repository.folder>../libs</library.repository.folder>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<outputDirectory>${library.repository.folder}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
这次我们没有使用install-file
目标,而是使用Maven Jar Plugin的jar
目标将打包的工件直接放到lib
文件夹中(而不是标准target
文件夹)以及包phase
(不是install
)。
如果出于任何原因,您希望将最终工件保留在目标文件夹中并将其直接复制到lib文件夹(没有maven文件夹层次结构)并且在安装阶段,那么您可以转到以下配置:
<properties>
<library.repository.folder>../libs</library.repository.folder>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>re-package-into-lib</id>
<phase>install</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<outputDirectory>${library.repository.folder}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>