在这种情况下,我需要清理和安装maven项目的几个依赖项。在进行这个项目时,我正在对这些依赖项进行更改,并且必须手动清理和安装我正在做的每一个小更改。我正在试图找到一个maven命令,这将使我的生活变得轻松。
我不能把它们作为子模块,因为它们不是我这个项目的真正模块,它们只是依赖关系。因此,字面上的组-id在完全意义上并不匹配(有部分匹配,但在任何方面都没有帮助)。
更新1:
尝试了马克建议的备选方案2。我在下面看到错误,它表明子模块(聚合的项目)在父项目的文件夹下找不到。
处理POMs时遇到一些问题: ERROR子模块E:\STS-Workspaces\default-workspace\project-bpm-process-artificial\project-core-service of E:\STS-Workspaces\default-workspace\project-bpm-process-artificial\pom.xml不存在@ 错误子模块E:\STS-Workspaces\default-workspace\project-bpm-process-artificial\project-odata-service of E:\STS-Workspaces\default-workspace\project-bpm-process-artificial\pom.xml不存在@ 错误子模块E:\STS-Workspaces\default-workspace\project-bpm-process-artificial\project-bpm-process of E:\STS-Workspaces\default-workspace\project-bpm-process-artificial\pom.xml不存在@
我刚刚创建了一个带有打包"pom“类型的新maven项目,并将其他项目添加为模块。现在,“项目-bpm-过程-人工”已经成为我所说的所有三个项目的人工家长。
从maven文档中,我看到路径是相对的。
更新2:
实际pom的位置位于:*E:\STS-Workspaces\default-workspace\project-bpm-process-artificial*
但是其他引用的项目在*C:\Users\ramgo\git* 和 *E:\git-repos*中。这些项目被导入eclipse进行开发。
pom.xml在这里:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>project-bpm-process-artificial</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>project-bpm-process-artificial</name>
<url>http://maven.apache.org</url>
<modules>
<module>project-core-service</module>
<module>project-odata-service</module>
<module>project-bpm-process</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>解决方案:由于各种实际原因,我发现选项1很容易实现(由Marks提供的选项1)。写一个批处理脚本几乎不需要5分钟。这是一个方便的参考。
set core=<directory_path_of_core_project>
set module_one=<<directory_path_of_module_one>>
set module_two=<<directory_path_of_module_two>>
cd %core%
call mvn clean install
cd %module_one%
call mvn clean install
cd %module_two%
call mvn clean install在我的情况下,备选案文2似乎很有趣,但不可行。链接不工作,也无法引用子模块的绝对路径。
.
发布于 2019-11-14 13:46:23
Maven依赖的概念假设工件是外部构建的(甚至不一定是用maven构建的),并且可以作为第三方jar提供给您的项目。
所以,问题中的术语对我来说是误导的。如果您有一些第三方(我假设有他们自己的pom.xml),但是您的项目是外部的,那么显然在您的项目中您无法管理它们。Maven不能构建外部的东西。
因此,基于这些假设,选择如下:
选项1
创建一个脚本,以便:
选项2
创建一个具有打包类型"pom“的”人工“pom.xml,并将您的项目和依赖项作为子模块列出(您的项目和依赖项将是对等的):
|__some_folder
|__pom.xml
|__dependency1
| |__pom.xml
|__dependency2
| |__pom.xml
|__your-project
|__pom.xml在这种情况下,您将能够像使用一个项目那样对两个项目源进行操作,并且可以使用以下内容:
cd some_folder
mvn clean install --projects <your-project> --also-make这样,如果您的项目在其他模块中有依赖项,它们也将被构建。
我可能会选择第二个选择,但这真的是你的选择。
基于您提供的信息的更新1:
E:\STS-Workspaces\default-workspace\project-bpm-process-artificial中,那么所有模块都应该位于子文件夹中: E:\
|_ STS-Workspaces
|_ default-workspace
|_ project-bpm-processes-artificial
|_ project-core-service
| |_pom.xml of that module
| |_.git // it can be a root of git repo
| |_src
|_ project-odata-service
| ...
|_ project-bpm-process 在此之后,您可以做以下检查:
cd E:\STS-Workspaces\default-workspace\project-bpm-process-artificial
mvn clean install它应该编译所有库和项目,如果您想构建项目(假设它称为project-bpm-process),那么您可以从同一个文件夹中编译:
mvn clean install --projects project-bpm-process --also-make 如果它依赖于project-core-service,但不依赖于project-data-service,那么只有project-core-service才会被重建。
现在,如果将maven排序,则可以在任何其他文件夹中添加eclipse工作区。由于我是IntelliJ用户,所以我对eclipse的评论不多。在intelliJ中,您只需导入这个人工pom,它就会自动识别所有的项目。在eclipse中,我认为它应该类似地工作。
https://stackoverflow.com/questions/58857736
复制相似问题