Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java pom.xml无法从外部属性文件读取属性_Java_Xml_Maven - Fatal编程技术网

Java pom.xml无法从外部属性文件读取属性

Java pom.xml无法从外部属性文件读取属性,java,xml,maven,Java,Xml,Maven,我有一个pom.xml,我在其中定义了一个从外部文件引用的属性- 请在下面找到我的pom.xml:- <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/

我有一个pom.xml,我在其中定义了一个从外部文件引用的属性-

请在下面找到我的pom.xml:-

<?xml version="1.0" encoding="UTF-8"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.src</groupId>
    <artifactId>common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>common</name>
    <url>http://maven.apache.org</url>
    <scm>
        <connection>scm:svn:http://127.0.0.1/dummy</connection>
        <developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>
        <tag>HEAD</tag>
        <url>http://127.0.0.1/dummy</url>
    </scm>

    <properties>
        <salcommon.version>${common-version}</salcommon.version>
    </properties>
    <repositories>
        <repository>
            <id>secureaccesslnk-maven</id>
            <url>https://nexus-maven/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
        <distributionManagement>
        <repository>
            <id>secureaccesslnk-maven-release</id>
            <url>https://nexus-maven-release/</url>
        </repository>
        <snapshotRepository>
            <id>secureaccesslnk-maven-snapshot</id>
            <url>https://nexus-maven-release/</url>
        </snapshotRepository>
    </distributionManagement>


    <dependencies>
        <dependency>
            <groupId>com.common</groupId>
            <artifactId>sal-logging</artifactId>
            <version>${salcommon.version}</version>
        </dependency>
        <dependency>
            <groupId>com.common</groupId>
            <artifactId>sal-auditor</artifactId>
            <version>${salcommon.version}</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.tmpl</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.tmpl</include>
                </includes>
            </resource>
        </resources>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-webdav-jackrabbit</artifactId>
                <version>1.0-beta-7</version>
            </extension>
        </extensions>

        <plugins>
            <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0.0</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <files>
                <file>common.version.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.4.201502262128</version>
                <configuration>
                    <destFile>${sonar.jacoco.reportPath}</destFile>
                    <append>true</append>
                </configuration>
                <executions>
                    <execution>
                        <id>agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <phase>test</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>
尽管我已经定义了从外部文件读取属性的插件,但当我进行mvn clean安装时,属性${common version}在运行时不会被替换

错误-com.common的dependencies.dependency.version e是有效版本,但为“${common version}”。@第107行第13列


我尝试了很多次上网搜索,但是没有一个解决方案对我有效。请帮助我

据我所知,你不可能做你想做的事情(即,将工件的版本外部化)。 这仅仅是因为Maven在任何插件运行之前/在您从文件中读取内容之前需要整个依赖项集(这是一种鸡和蛋的情况)


这似乎支持这种说法。

不确定为什么要将jar版本外部化

若您希望所有jar文件的版本位于同一位置,并且应该在所有项目中保持一致,那个么您可以使用MyMaven提供的dependencyManagement标记


在父pom中添加所有通用依赖项,在子项目中仅指定不带版本的依赖项

您可以使用BOM pom并将其用作主pom中的父项。这样,您就可以将属性保存在外部文件中

BOM POM:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>bom</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <properties>
    <common-version>3.0.1.0-SNAPSHOT</common-version>
  </properties>
</project>

4.0.0
com.test
物料清单
1.0.0
聚甲醛
3.0.1.0-快照
在主POM中,添加父声明:

  <parent>
    <groupId>com.test</groupId>
    <version>1.0.0</version>
    <artifactId>bom</artifactId>
  </parent>

com.test
1.0.0
物料清单

据我所知,不可能执行您试图执行的操作(即外部化工件的版本)。这仅仅是因为Maven在任何插件运行之前/在您从文件中读取内容之前需要整个依赖项集(这是一个鸡和蛋的情况)。

为什么不将版本放入pom文件中?
  <parent>
    <groupId>com.test</groupId>
    <version>1.0.0</version>
    <artifactId>bom</artifactId>
  </parent>