java 如何在pom.xml中动态添加任何依赖项的版本而无需分析

ryevplcw  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(265)

我想使用${variable_name}动态添加依赖项的版本,我在另一个与pom并行的www.example.com文件中添加了该变量pom.properties。我得到“无法解决依赖关系”错误。我用的是properties-maven-plugin
我希望,如果我使用这个插件的插件会读我的变量,我已经在www.example.com中定义pom.properties,我将能够使用该变量的版本标记的依赖关系。我使用org.jacoco.jacoco-maven-plugin来解决这个问题。
我在下面添加了我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.9</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project</name>
    <description>Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <build>
        <plugins>
          <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>set-property</goal>
                        </goals>
                       
                        <configuration>
                            <files>
                                
                                <file>C:\Users\praduman.yadav\eclipse\learning-workspace\springboot project\project\example-library.properties</file>
                            </files>
                         
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${example-library.version}</version>
        </dependency>
    </dependencies>
</project>

我在下面的www.example.com中添加了下面的版本变量pom.properties

version=0.8.8
ig9co6j1

ig9co6j11#

有几件事要指出
1.如果你打算使用maven属性插件(无论是新的还是旧的,见下文),这对你没有帮助。因为当maven解析POM时,它需要知道版本,它发生在任何构建之前。所以在构建的时候,你应该已经知道依赖的版本,而不是在某个构建阶段。因此,您尝试使用的插件不会解决此问题。
1.为了解决这个问题,你可以尝试将属性传递到maven表单命令行,比如-Dsome.version=1.6.3。这样,您将在解析时提供属性值,以便maven能够识别并替换变量。
作为一个侧记,谈到properties-maven-plugin,有2个选项,据我所知...

我只能告诉后来,因为我自己是该项目的贡献者之一-有一个README.md文件,显示了如何使用插件的多个示例。这里也有一个例子专门针对你的情况。看看这个

相关问题