2016-08-11 4 views
1

spring-boot mavenプラグインを使用して実行可能なjarをビルドします。 xmlファイルが実行時に正しく読み込まれるように、依存するjarの1つを解凍する必要があります。私はlibsの解凍に関する文書に従った。私はjarファイルの内容を確認し、開梱情報が瓶でエンコードされたことを確認しSpring Boot requiresUnpackが実行時にupackingしていません

 <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <requiresUnpack> 
        <dependency> 
         <groupId>com.deep6analytics.pipeline</groupId> 
         <artifactId>pipeline-services-ctakes</artifactId> 
        </dependency> 
       </requiresUnpack> 
      </configuration> 
     </plugin> 
    </plugins> 

$ zipnote target/pipeline-apps-annotation-server-1.0-SNAPSHOT.jar | grep -C 1 UNPACK 
@ BOOT-INF/lib/pipeline-services-ctakes-1.0-SNAPSHOT.jar 
UNPACK:1e6eda0ca9f1b740c4aba6058cac74a5084f1706 
@ (comment above this line) 

は、ドキュメントによると、実行時に、私は期待以下のように私のプラグイン設定であります私の$ TMPDIR内 "春ブート-libsの" ディレクトリを参照するには:

< groupIdをと<依存>として各ライブラリを指定しますと<のartifactId >があり、実行時に$ TMPDIR/spring-boot-libsでアンパックされます。

ただし、アプリケーションを実行すると、$ TMPDIRがチェックされ、解凍されたディレクトリは表示されません。その結果、私のアプリケーションが起動に失敗します。

ls -la $TMPDIR 

drwxr-xr-x 3 staff  102 Aug 10 23:40 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-96fe7360-b23b-4caa-a2ce-75aa0300a417 
drwxr-xr-x 3 staff  102 Aug 10 23:27 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-a06a2373-0694-42e9-bee1-29191b3b764a 
drwxr-xr-x 4 staff  136 Aug 10 20:54 sp_update 
drwx------ 2 staff  68 Aug 10 11:30 ssh-azEJDYkZH6ho 
drwxr-xr-x 3 staff  102 Aug 10 15:05 tomcat.104726406473930572.8085 
drwxr-xr-x 3 staff  102 Aug 10 23:38 tomcat.1527552147767629466.8080 
drwxr-xr-x 3 staff  102 Aug 10 23:13 tomcat.1546871599966723864.8080 

誰もが私が間違ってやっている、または私は何かを誤解していますか見ていますか?

答えて

2

ドキュメントは少し誤解を招いています。アンパックディレクトリがあります

drwxr-xr-x 3 staff  102 Aug 10 23:40 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-96fe7360-b23b-4caa-a2ce-75aa0300a417 
drwxr-xr-x 3 staff  102 Aug 10 23:27 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-a06a2373-0694-42e9-bee1-29191b3b764a 

これらのディレクトリは、あなたの実行可能なjarファイルからアンパックする必要があるものとしてマークされているのjarファイルが含まれている必要があります。

an issueを開いてドキュメントを修正しました。

+1

Ok - jarファイル内の各リソースがディスク上のファイルとして存在するように、jarファイルが "展開"されるとも考えました。だから、実際に "アンパック"が何を意味するのかが分かります。 jar内のリソースをファイルシステムに展開して直接読み込むことができますか? –

+1

なぜそれをやりたいのか分かりませんが、ClassLoader.getResourceAsStream()を介してリソースにアクセスし、ファイルに書き出すことができます。 –

+1

残念ながら、入れ子になったxmlドキュメントを再帰的に使用するインフラストラクチャを使用しています。含まれているすべてのドキュメントがファイルシステムに存在すると仮定しています。その事実を変えるために私ができることは何もありません。したがって、私は、これらのファイルをjarファイルから取り出し、ファイルシステムに置く必要があるということはありません。 –

関連する問題