Java Maven项目是否获取其他Maven项目的版本?

Java Maven项目是否获取其他Maven项目的版本?,java,maven,Java,Maven,我必须管理客户端和服务器上的项目。服务器的版本始终是客户端的版本。这个“版本”不是客户端maven工件的版本。更多的是来自客户端的属性,我需要它在服务器中。它是根据pom的属性和构建号或“中继快照”(当客户端在开发人员机器上构建时)创建的 客户端版本在构建时创建(Jenkins build或本地mvn clean install)。我需要使用Java读取服务器模块上的客户端版本 最好的方法是什么 我试图创建一个文本文件作为客户端的工件,但在服务器上找不到一个简单的方法来读取它。在这里查看POM文

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

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

最好的方法是什么


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

在这里查看POM文档:。具体来看项目聚合:

您可能需要的是一个父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.xml在此处查看pom文档:。具体来看项目聚合:

您可能需要的是一个父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.xml最简单的解决方案是在父pom文件中定义一个属性,并在客户端和服务器模块中引用该属性

pom.xml
server/pom.xml
client/pom.xml
现在,父pom.xml将具有以下内容

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

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

<version-needed-tag>${my.custom.version}</version-needed-tag>
${my.custom.version}

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

pom.xml
server/pom.xml
client/pom.xml
现在,父pom.xml将具有以下内容

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

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

<version-needed-tag>${my.custom.version}</version-needed-tag>
${my.custom.version}


我在客户机中使用properties maven插件创建了一个属性文件,该文件将在client.jar中结束。我使用ClassLoader.getsystemresourceastream(“my.properties”)在服务器上读取它。

我在客户端使用properties maven plugin创建了一个属性文件,该文件将最终保存在client.jar中。我使用ClassLoader.getsystemresourceastream(“my.properties”)在服务器上阅读了它。

当您提到客户机项目和服务器项目时,您只是指两个maven项目吗?是否有一个父项目同时构建这两个项目,或者它们是完全独立的,并且分别构建在两台独立的机器上?是的,两个maven项目具有相同的父项目。但它们可以单独构建。我们有一个工件,它们通常构建在同一台机器上。您应该能够在父pom中定义一个属性并在模块中引用,我在下面添加了一个示例作为答案。当您提到客户机项目和服务器项目时,您只是指两个maven项目吗?是否有一个父项目同时构建这两个项目,或者它们是完全独立的,并且分别构建在两台独立的机器上?是的,两个maven项目具有相同的父项目。但它们可以单独构建。我们有一个工件,通常它们是在同一台机器上构建的。你应该能够在父pom中定义属性并在模块中引用,我在下面添加了一个示例作为答案。我认为这对我没有帮助。版本仅在生成时创建,而不是工件的版本。您是使用代码还是使用类似于源代码管理版本号的内容生成此版本?如果是后一种情况,请使用maven build number插件生成该版本作为项目版本的一部分。构建客户端之后,如何使用Java在服务器中获取版本?好的,那么您的代码正在执行类似于健全性检查的操作,以确保调用服务器的客户端的版本与服务器的版本匹配。以下列出了一些解决这一问题的策略:。我会考虑一下,然后再发回来。我认为您有3或4个子任务来解决您的整个用例。我发现了一个解决方案,使用客户端中的properties maven插件创建一个属性文件,该文件将最终保存在client.jar中。我在服务器上用ClassLoader.getsystemresourceastream(“my.properties”)阅读了它,我认为这对我没有帮助。版本仅在生成时创建,而不是工件的版本。您是使用代码还是使用类似于源代码管理版本号的内容生成此版本?如果是后一种情况,请使用maven build number插件生成该版本作为项目版本的一部分。构建客户端之后,如何使用Java在服务器中获取版本?好的,那么您的代码正在执行类似于健全性检查的操作,以确保调用服务器的客户端的版本与服务器的版本匹配。以下列出了一些解决这一问题的策略:。我会考虑一下,然后再发回来。我认为您有3或4个子任务来解决您的整个用例。我发现了一个解决方案,使用客户端中的properties maven插件创建一个属性文件,该文件将最终保存在client.jar中。我在服务器上使用ClassLoader.getSystemResourceAsStream(“my.properties”)读取了它。当我构建客户端时,如何更新属性?一个选项是通过命令行传递属性的值。mvn clean install-Dmy.custom.version=1234K,这将更新客户端工件的属性,然后如何使用java为服务器模块获取此属性?当使用父pom构建两个模块客户端和服务器时,需要通过命令行传递此属性。然后这两个子模块将收到相同的属性值。是的,这是可行的,但我的主要问题是,大多数时候它们是单独构建的,因此我需要@server module从客户端工件读取版本的方法构建客户端时如何更新属性?一个选项是通过命令行传递属性值。mvn清洁安装-Dmy.custom.version