Java- 使用 ArtifactVersionCollector 从 pom 收集版本

Java- gathering versions from pom with ArtifactVersionCollector

提问人:DDS 提问时间:11/16/2023 更新时间:11/16/2023 访问量:15

问:

我有一个应用程序,在 IntellIJ 中配置了 java 子模块(java 子模块未命名)。

每个子模块在他的基本文件夹中都有自己的 pom(编译工作正常)。

我的目标是让这个函数适用于每个子模块

import de.westemeyer.version.service.ArtifactVersionCollector;

class Main {
static String getVersion(){

String modname = "Main";
return modname + ":" + ArtifactVersionCollector.findArtifact("com.dds.project",modname);
}

public static void main(String[] argv){

    for(var v : artifactVersionCollector.collectArtifacts().toArray()){
            sLogger.error( "{}", v );
        }
}
}

class Prj2 {
static String getVersion(){

String modname = "prj2";
return modname + ":" + ArtifactVersionCollector.findArtifact("com.dds.project",modname);
}
}


class Prj3 {
static String getVersion(){

String modname = "prj3";
return modname + ":" + ArtifactVersionCollector.findArtifact("com.dds.project",modname);
}
}

现在,如果我从 IJ(作为 Java 应用程序)运行应用程序,我可以获得版本,但如果我从 jar(也从 IJ)运行它,我只能获得单个组件的版本

注意:要制作我使用的 jar,我使用与 IJ 运行配置相同的工作目录运行它。mvn clean package

base  
|  
 - prj1  
 --src  
 --- Main.java  
 --pom.xml  (Main:V1)  
 - prj2   
 --src  
 --- File2.java
 --pom.xml  (prj2:V2)  
 - prj3  
 --src  
 --- File3.java
 --pom.xml  (prj3:V3)  
- pom.xml (base:va) <== this one contains the modules section  

现在如果我在Main.java中运行上面的调用,我会得到Prj3的版本(prj3:v3)

Java Maven 版本控制 git-submodules

评论

0赞 cyberbrain 11/17/2023
你读过文档吗?所有“参与”jar 文件都可以通过提供自己的 ArtifactVersionService 实现来贡献自己的版本。因此,您可能要做的不仅仅是阅读其他模块版本?
0赞 khmarbaise 11/17/2023
首先,您的源文件是否真的在目录中而不是在?File3.javasrcsrc/main/java/<package>

答: 暂无答案