0

Mavenを使用して.jarファイルとしてパッケージ化しようとしているScalaアプリケーションがあります。 jarにリソースとしてパッケージしようとしているapplication.confファイルがあります。しかし、リソースプラグインをsrc/main/resourcesに入れるか、他のフォルダからpom.xmlに追加することで自動的にリソースを使用すると、Mavenはコンパイルして.classファイルをjarファイルにパッケージングしなくなります。リソースプラグインを使用している場合のみ、Mavenがjarファイル内のScala .classファイルをコンパイルしない、またはインクルードしない

リソースプラグインを使用しない限り、すべてが100%動作します。 MavenはScalaコンパイラを実行し、.classファイルをjarファイルに入れ、7zip経由で手動でリソースを追加した後、プログラムは正常に実行されます。

いくつかの追加の詳細:

  • 私はまた、脂肪のjarファイルを生成するのmaven-シェードプラグインを使用していArtima刊Supersafeコンパイラプラグイン
  • とScalaの-のmaven-pluginのを使用していますakkaのreference.confファイルを連結し、マニフェストを生成します。これはリソースプラグインを使用しているときにも動作しますが、そのうち私の .classファイルがありません。私はこのプラグインなしで実行しようとしましたが、結果はまったく同じです。
  • は私が手動でリソースを使用する場合しかし、代わりにそれをプラグインコンパイラの警告などが続く
  • リソースプラグインを使用していない、Scalaはコンパイルのsrc /メイン/スカラ座などsourceDirectory、コンソール出力が表示さ[INFO] --- scala-maven-plugin:3.2.0:compile (default) @ batchmanager ---を指定しています常に主張している:[INFO] Nothing to compile - all classes are up to date
  • リソースプラグイン
  • を使用している場合application.confファイルが実際に正しく瓶に表示されない私はそこにある感情を持っているCLI
  • 、Eclipseの通過

をMavenをない実行していますよ何かbout私が理解していないリソースプラグイン。どんな助けでも大歓迎です。

いっぱいの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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.digitalalbatross</groupId> 
    <artifactId>batchmanager</artifactId> 
    <version>0.0.1</version> 
    <name>${project.artifactId}</name> 
    <inceptionYear>2017</inceptionYear> 
    <licenses> 
     <license> 
      <name>My License</name> 
      <url>http://....</url> 
      <distribution>repo</distribution> 
     </license> 
    </licenses> 

    <properties> 
     <maven.compiler.source>1.6</maven.compiler.source> 
     <maven.compiler.target>1.6</maven.compiler.target> 
     <encoding>UTF-8</encoding> 
     <scala.version>2.12.2</scala.version> 
     <scala.compat.version>2.12</scala.compat.version> 
    </properties> 

    <repositories> 
     <repository> 
      <id>artima</id> 
      <name>Artima Maven Repository</name> 
      <url>http://repo.artima.com/releases</url> 
     </repository> 
    </repositories> 

    <dependencies> 

     <!-- Test --> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-http_2.12</artifactId> 
      <version>10.0.7</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.scala-lang</groupId> 
        <artifactId>scala-library</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.iq80.leveldb</groupId> 
      <artifactId>leveldb</artifactId> 
      <version>0.9</version> 
     </dependency> 
     <dependency> 
      <groupId>org.fusesource.leveldbjni</groupId> 
      <artifactId>leveldbjni-all</artifactId> 
      <version>1.8</version> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-actor_2.12</artifactId> 
      <version>2.5.1</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.scala-lang</groupId> 
        <artifactId>scala-library</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-persistence_2.12</artifactId> 
      <version>2.5.1</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.scala-lang</groupId> 
        <artifactId>scala-library</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-stream_2.12</artifactId> 
      <version>2.5.1</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.scala-lang</groupId> 
        <artifactId>scala-library</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-http-spray-json_2.12</artifactId> 
      <version>10.0.6</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.scala-lang</groupId> 
        <artifactId>scala-library</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.scalatest</groupId> 
      <artifactId>scalatest_2.12</artifactId> 
      <version>3.0.3</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.scala-lang</groupId> 
        <artifactId>scala-library</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>2.12.2</version> 
     </dependency> 
    </dependencies> 

    <build> 

     <sourceDirectory>src/main/scala</sourceDirectory> 
     <testSourceDirectory>src/test/scala</testSourceDirectory> 

     <resources> 
      <resource> 
       <directory>res</directory> 
       <includes> 
        <include>application.conf</include> 
       </includes> 
      </resource> 
     </resources> 


     <plugins> 
      <plugin> 
       <!-- see http://davidb.github.com/scala-maven-plugin --> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
       <version>3.2.0</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>compile</goal> 
          <goal>testCompile</goal> 
         </goals> 
         <configuration> 
          <compilerPlugins> 
           <compilerPlugin> 
            <groupId>com.artima.supersafe</groupId> 
            <artifactId>supersafe_${scala.version}</artifactId> 
            <version>1.1.2</version> 
           </compilerPlugin> 
          </compilerPlugins> 
          <args> 

           <arg>-dependencyfile</arg> 
           <arg>${project.build.directory}/.scala_dependencies</arg> 
          </args> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.18.1</version> 
       <configuration> 
        <useFile>false</useFile> 
        <disableXmlReport>true</disableXmlReport> 
        <!-- If you have classpath issue like NoDefClassError,... --> 
        <!-- useManifestOnlyJar>false</useManifestOnlyJar --> 
        <includes> 
         <include>**/*Test.*</include> 
         <include>**/*Suite.*</include> 
        </includes> 
       </configuration> 
      </plugin> 



      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>3.0.0</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <shadedArtifactAttached>true</shadedArtifactAttached> 
          <shadedClassifierName>allinone</shadedClassifierName> 
          <artifactSet> 
           <includes> 
            <include>*:*</include> 
           </includes> 
          </artifactSet> 
          <transformers> 
           <transformer 
            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
            <resource>reference.conf</resource> 
           </transformer> 
           <transformer 
            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
            <manifestEntries> 
             <Main-Class>com.digitalalbatross.batchmanager.Boot</Main-Class> 
            </manifestEntries> 
           </transformer> 
          </transformers> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 
    <description>Batch Manager for IMAX</description> 
    <organization> 
     <name>Digital Albatross Design and Consulting</name> 
     <url>digitalalbatross.com</url> 
    </organization> 
</project> 

答えて

0

(リソース定義を削除するには、ファイルの作業と非稼働のバージョン間の唯一の違いです)。私のEclipse Workbenchは起動時にクラッシュし続けたので、.pluginsフォルダを削除して問題を解決しました。これは私のeclipse設定を修正しただけでなく、Mavenは協力して、実際にはリソースとクラスファイルの両方をjarファイルにインクルードし始めました。生成されたjarファイルのうち実際にマニフェストが生成されたことを混乱させた後、私は期待通りに動作していることを確認しました。

要約すると、おそらく私の.pluginsフォルダ内の何かによって引き起こされる奇妙なバグでした。そのフォルダを削除してセットアップを再設定すると、問題が解決しました。

関連する問題