有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaMaven项目是否获得其他Maven项目的版本?

我必须管理客户机和服务器上的项目。服务器的版本始终是客户端的版本。这个“版本”不是客户端maven工件的版本。更多的是来自客户端的属性,我需要它在服务器中。它是根据pom的属性和构建号或“主干快照”(当客户端在开发人员机器上构建时)创建的

客户端版本在构建时创建(Jenkins build或本地mvn clean install)。我需要使用Java读取服务器模块上的客户端版本

最好的方法是什么

我试图创建一个文本文件作为客户端的工件,但我找不到在服务器上读取它的简单方法


共 (3) 个答案

  1. # 1 楼答案

    我在客户端使用properties maven插件创建了一个属性文件来解决这个问题,该文件最终会出现在客户端。罐子我使用ClassLoader在服务器上读取它。getSystemResourceAsStream(“my.properties”)

  2. # 2 楼答案

    最简单的解决方案是在父pom文件中定义一个属性,并在客户端和服务器模块中引用该属性

    pom.xml
    server/pom.xml
    client/pom.xml
    

    现在是pom家长。xml将包含以下内容

    <properties>
        <my.custom.version>1234</my.custom.version>
    </properties>
    

    在服务器和客户端pom中。xml文件,您可以如下引用它

    <version-needed-tag>${my.custom.version}</version-needed-tag>
    
  3. # 3 楼答案

    在这里查看POM文档:https://maven.apache.org/guides/introduction/introduction-to-the-pom.html。具体来看项目聚合:https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Aggregation

    您可能需要的是一个父POM,它有一个用于客户端的模块和一个用于服务器的模块

    您的项目结构如下所示:

    ./pom.xml <  this is your parent pom, it has version info, module entries for client/server, and dependencies that are used by both the client and server
    ./server
    ./server/pom.xml <- this is the pom for your server
    ./client
    ./client/pom.xml <- this is the pom for your client
    

    然后,您可以在父pom中定义版本,并由客户端和服务器继承它。要定义构建编号,可以使用lkamal建议的解决方案,通过更改Maven version属性

    另一个要考虑的选项是生成生成号的方式。Maven的Build Number Plugin可以生成任意顺序的内部版本号,也可以从SCM版本生成一个