在Angular中从pom.xml读取POM版本

时间:2020-08-08 21:30:38

标签: javascript angular typescript

如何从pom.xml读取数据并在任何Angular组件中显示其值。

例如-我需要在pom.xml中访问/获取版本,并在Angular组件中显示该值。 下面是pom.xml的一部分

<groupId>appName</groupId>
<artifactId>credit</artifactId>
<version>1.0.13.0-dev</version>  <!-- THIS FIELD i want in angular-->
<packaging>war</packaging>

此外,我还需要确保在部署后我也能够获得最新的更新版本。

1 个答案:

答案 0 :(得分:2)

  1. 如果您的角度应用程序位于Java应用程序内部(例如,春季启动)

您可以使用frontend-maven-plugin创建一个environmentVariable,供您的Webpack构建使用

<plugin>
                        <groupId>com.github.eirslett</groupId>
                        <artifactId>frontend-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>webpack build dev</id>
                                <goals>
                                    <goal>npm</goal>
                                </goals>
                                <phase>generate-resources</phase>
                                <configuration>
                                    <arguments>run webpack:build</arguments>
                                    <environmentVariables>
                                        <APP_VERSION>${project.version}</APP_VERSION>
                                    </environmentVariables>                                  
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

在您的webpack插件中: 如果您不知道如何为角度应用程序使用自定义Webpack,则可以查看此内容 https://www.npmjs.com/package/@angular-builders/custom-webpack

    plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                // APP_VERSION is passed as an environment variable from the Maven build tasks.
                VERSION: `'${process.env.hasOwnProperty('APP_VERSION') ? process.env.APP_VERSION : 'DEFAULT'}'`
            }
        }),

然后在您的.ts文件(例如,包含常量的文件)中

export const VERSION = process.env.VERSION;

1.2另一个解决方案是使用js(ts)脚本直接解析pom.xml并读取pom.xml内的version标签

  1. 如果您的角度应用程序不在Java应用程序中,则需要通过rest api公开版本