0

私はプロジェクト用の依存関係のあるuber jarすなわちjarを作成しています。私はプロジェクトが使用するたくさんのプロパティファイルを持っています。プロジェクトを実行する前にこれらのプロパティファイルを変更して、それらをjarファイルの外に置いて欲しいと思っています。ここに私のポンポンの関連セクションUber jarが外部プロパティファイルを読み取っていません

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 

        <artifactSet> 
         <excludes> 
          <exclude>**/*.properties</exclude> 
          <exclude>**/*.json</exclude> 
         </excludes> 
        </artifactSet> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>path.to.main.Main</mainClass> 
         </manifest> 
         <manifestEntries> 
          <Class-Path>.</Class-Path> 
          <Class-Path>conf/</Class-Path> 
         </manifestEntries> 
        </archive> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <id>copy-resources</id> 
         <phase>install</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${basedir}/target/conf</outputDirectory> 
          <resources> 
           <resource> 
            <directory>src/main/resources</directory> 
            <includes> 
             <include>**/*.properties</include> 
             <include>**/*.json</include> 
            </includes> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

ので、基本的に、私はフォルダ${basedir}/target/confを作成したいと、それにすべての.properties.jsonファイルをコピーしています。また、ここで私は私が問題

  1. 私はmvn clean installを行う

    のカップルに直面しています

    InputStream in = this.getClass().getClassLoader().getResourceAsStream("filename.properties"); 
    

    ファイルを読んでいる方法です、私はまだclassesフォルダ内のすべての.properties.jsonファイルを参照してください。彼らはしてはならないを除いて?

  2. confフォルダは、すべてのファイルを使用して作成されていますが、私はjarファイルを実行するADNのプロパティを変更しようとすると、変更がを拾っていません。 confフォルダがクラスパスに追加されていることを確認するにはどうすればよいですか?

  3. 私は、私はので、私は別のフォルダに入れたいいけない開発していながらsrc/main/resourcesフォルダから.properties.jsonファイルをロードできるようにしたいです。これは可能ですか?

答えて

0

私はユーバージャーは、外部の設定ファイルを読み込んでいない、同じ問題に直面していました。 以下の設定を試してみましたが、魅力的でした。以下の設定を参照すると、エクバーナルファイルを読まないユーバージャーの問題を持つ人が助けになるかもしれません。 は、私はこれが最善の方法があるかどうかわからないですが、私はIncludeResourceTransformerを使用してリソースが含まれている任意のsoultionオンライン:)

  1. 見つかっていません。
  2. フィルタを使用すると、プロパティファイルがuber jarから削除されました。
  3. 外部のフォルダからプロパティを読み取るclasspath/confにあります。

    <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-shade-plugin</artifactId> 
         <version>2.3</version> 
         <executions>   <!-- Run shade goal on package phase --> 
          <execution> 
           <phase>package</phase> 
           <goals> 
            <goal>shade</goal> 
           </goals> 
           <configuration> 
            <transformers> 
             add Main-Class to manifest file 
             <transformer 
              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
              <manifestEntries> 
               <Main-Class>JobName</Main-Class> 
               <Class-Path>conf/</Class-Path> 
              </manifestEntries> 
             </transformer> 
             <transformer 
              implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer"> 
              <resource>src/main/resources/config.properties</resource> 
              <file>${project.basedir}/src/main/resources/config.properties</file> 
             </transformer> 
            </transformers> 
            <finalName>FinalJarName</finalName> 
            <filters> 
             <filter> 
              <artifact>groupId:artifactId</artifact> 
              <excludes> 
               <exclude>**/*.properties</exclude> 
              </excludes> 
             </filter> 
            </filters> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
    

幸運。

関連する問題