2016-05-29 16 views
0

.propertiesからファイルを取得する方法は、私の現在のプロジェクトの1つとして、pom.xml<properties>タグのプロパティを設定していましたが、私の要件は、私はいくつかの.properties ex:dev.propertiesファイルのすべてのプロパティを設定します。その中に以下の内容があります。だから、mavenプラグインを使用して.propertiesから値を読み取る方法

spring.package=org.springframework 
spring.artifact=spring-core 
spring.version=3.0.5.RELEASE 

、今私は次のようにpom.xmlに上記のプロパティを設定したい:

<dependencies> 
     <dependency> 
      <groupId>spring.package</groupId> 
      <artifactId>spring.artifact</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
    </dependencies> 

私は、このリンクを経て:How to read an external properties file in Maven

しかし、それは次のエラーを与えています。 Missing artifact org.springframework:spring-core:jar:spring.version

ここはpom.xml

<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.ram</groupId> 
    <artifactId>DynamicProperties</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <properties> 
     <spring.version>spring.version</spring.version> 
    </properties> 
    <build> 
     <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> 
          <urls> 
           <url>file:///D:/Hadoop_Apps/DynamicProperties/src/main/resources/dev.properties</url> 
          </urls> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.5.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
    </dependencies> 
</project> 

しかし、spring-core-3.0.5.RELEASE jarは、Mavenリポジトリで利用できます。 これを行うための他のプラグインはmavenにありますか、ここに追加の設定がありませんでした。

私が間違っている場合は、訂正してください。

ありがとうございました。

答えて

0

修正されたpomは下記をご覧ください。

<spring.version>spring.version</spring.version> 

タグ -

<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.ram</groupId> 
<artifactId>DynamicProperties</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<properties> 
    <spring-version>spring.version</spring-version> 
</properties> 
<build> 
    <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> 
         <urls> 
          <url>file:///${basedir}\src\main\resources\config.properties</url> 
         </urls> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
</dependencies> 

問題がでました。それはあったはずです

<spring-version>spring.version</spring-version> 

内部プロパティタグ。

BRすべての

+0

こんにちはジーテンドラ、それは誤植だ、私はあなたのポンポンファイルを投稿してくださいすることができる唯一のことは、エラー – Creator

+0

を与えているということで同じことをやりました。それで私たちはそれをより良く分析することができます。 – Jeet

+0

pom.xml updated – Creator

2

まず、Mavenのは、あなたのpom.xmlを読み込むとき、それはすぐに

<properties> 
    <spring.version>spring.version</spring.version> 
</properties> 

だから経由して、後で値を変更すると、指定した実際の値とのような${spring.version}をプレースホルダを置き換えますプラグインが遅すぎる!しかし、現時点で価値がない場合、Mavenはこれを行いません。したがって、これらのプロパティをpom.xmlから削除し、後でビルドライフサイクルでMavenプラグインで定義できるようにすることができます。これは通常、プラグインによってオーバーライドされたプロパティの使用を解決しますが、...

第2に、Mavenはプラグインを実行する前に依存関係を解決する可能性があります。全部。その場合は、代わりにプロパティとプロファイルをactivate a certain profileに移動することができます。

<properties> 
    <!-- default goes here, when no profile is used --> 
    <spring.version>3.0.4-RELEASE</spring.version> 
</properties> 

<profiles> 
    <profile> 
    <id>dev</id> 
    <properties> 
     <spring.version>3.0.5-RELEASE</spring.version> 
    </properties> 
    </profile> 
    <profile> 
    <id>prod</id> 
    <properties> 
     <spring.version>3.0.1-RELEASE</spring.version> 
    </properties> 
    </profile> 
</profiles> 
+0

あなたはどのれるプロパティを介した依存関係のバージョンを定義してはいけません。すべての環境で同じ依存関係を使用するよりも異なる環境がある場合 – khmarbaise

+0

はい、ユースケースが正確であるかどうかはわかりませんが、環境によって異なるバージョンを使用すると危険です。 –

関連する問題