2017-08-28 107 views
1

我有一个很大的应用程序,包括几十个微服务WAR部署,其中一个是支持Web客户端的UI控制器。我希望能够在用户界面上显示“关于”页面,其中列出了所有组件微服务的版本。我可以通过运行mvn dependency:list并使用适当的过滤器手动轻松生成此列表,但我想要在生成过程中自动生成该列表,然后将其插入到UI服务WAR中,以便在运行时访问它。自动生成关于对话版本

+0

如果您有微服务,UI不应该知道正在使用哪个版本的后端服务(微服务),也不应该帽子以某种方式打包到你的用户界面中......如果你改变了一个微服务并部署了一个新版本,而不是信息只是错误......那么如果你已经发现'dependency:list'也可以生成该列表到一个文件... – khmarbaise

+0

我想我正在寻找的是一种方式来调用从POM的依赖:列表,并捕获其输出。我知道如何将静态文件打包到服务战中。是的,你是对的,如果服务在部署之后得到更新,版本信息将是陈旧的,但这实际上是一个调试工具,用于了解我正在远程访问的系统上的内容。 – user2650994

+0

将'dependency:list'文件安全地保存到目标文件夹'target/...'并打包到结果war文件中?这意味着您需要在'prepare-package'阶段执行插件... – khmarbaise

回答

0

depends-maven-plugin将生成一个文件(默认为:target/classes/META-INF/maven/dependencies.properties)。此文件包含dependency:tree的可解析(且可读可读)表示,并且由于它将此文件写入classes/META-INF,因此默认情况下,它将在捆绑应用程序中可用。

<plugin> 
    <groupId>org.apache.servicemix.tooling</groupId> 
    <artifactId>depends-maven-plugin</artifactId> 
    <version>1.4.0</version> 
    <executions> 
     <execution> 
      <id>generate-depends-file</id> 
      <goals> 
       <goal>generate-depends-file</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

当运行你会看到Maven的写这篇日志声明:

[INFO] --- depends-maven-plugin:1.4.0:generate-depends-file (generate-depends-file) @ sample --- 
[INFO] Created: /dev/code/stackoverflow/target/classes/META-INF/maven/dependencies.properties 

下面是生成的文件的一个例子:

# Project dependencies generated by the Apache ServiceMix Maven Plugin 
# Generated at: Mon Aug 28 18:42:30 IST 2017 

groupId = com.stackoverflow 
artifactId = sample 
version = 1.1-SNAPSHOT 
com.stackoverflow/sample/version = 1.1-SNAPSHOT 

# dependencies 

ch.qos.logback/logback-access/version = 1.2.3 
ch.qos.logback/logback-access/type = jar 
ch.qos.logback/logback-access/scope = compile 

ch.qos.logback/logback-classic/version = 1.2.3 
ch.qos.logback/logback-classic/type = jar 
ch.qos.logback/logback-classic/scope = compile 

... etc 

你如下搞这个插件