2017-09-19 5 views
0

これは私をうまく運転しています。このmaven fluffに関する経験はほとんどありません。私はすでに、私の現在のマニフェストファイルを使って、最初は動作させていました。マニフェストファイルは認識されていない/動作していません

Manifest-Version: 1.0 
Class-Path: /Users/avalin/.m2/repository/org/slf4j/slf4jnop/1.7.25/slf4j-nop-1.7.25.jar 
     /Users/avalin/.m2/repository/org/drools/drools-compiler/7.3.0.Final/drools-compiler-7.3.0.Final.jar 
     /Users/avalin/.m2/repository/org/drools/drools-core/7.3.0.Final/drools-core-7.3.0.Final.jar 
     /Users/avalin/.m2/repository/org/kie/kie-api/7.3.0.Final/kie-api-7.3.0.Final.jar 
     /Users/avalin/.m2/repository/org/kie/kie-internal/7.3.0.Final/kie-internal-7.3.0.Final.jar 
Main-Class: org.avalin.optaplanner.main.EmployeeRoster 

IntelliJのは「巧みに」十分な代わりのjava-フォルダに

をそれを置くしかし、今、私は突然、これを取得しようとしているが、マニフェストが 、私のリソース/ META-INFフォルダに正しく配置する必要がありますエラー:

Exception in thread "main" java.lang.NullPointerException 
    at org.kie.internal.io.ResourceFactory.newByteArrayResource(ResourceFactory.java:66) 
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.getResource(AbstractKieModule.java:299) 
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:264) 
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:259) 
    at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:228) 
    at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:74) 
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:251) 
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:219) 
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:177) 
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildDroolsScoreDirectorFactory(ScoreDirectorFactoryConfig.java:503) 
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:331) 
    at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:220) 
    at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61) 
    at org.avalin.optaplanner.main.EmployeeRoster.main(EmployeeRoster.java:31) 
Avalins-MacBook-Pro:~ avalin$ 

私は私のポンポンでこれを持っている:

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <mainClass>org.avalin.optaplanner.main.EmployeeRoster</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 

しかし、それは絶対に何にも影響しないようです... "users/avalin"はそこにはないように私のマニフェストファイルの変更を必要としますが、明らかに別のコンピュータで生成されます同じパス...ちょうどそれを最初の場所で働くことはおそらく素晴らしいスタートになるでしょう

+0

mainClassは次のようにする必要があります: 'org.avalin.optaplanner.main.EmployeeRoster' ... – khmarbaise

+0

Oh yeah woops - 注目に値する!問題が起きるまではあまりしませんでしたが、intellijがjavenを作成したときにマニフェストが作成されていると思われます。 – Avalin

答えて

0

私はそれを "修正"し、それを修正することで、回避策を作ることを意味します。 最初に、intelliJの "ファンキーな"ジャーを構築する方法は、 "Maven Projects"タブを開いて右下から論理的に見えるビルドアーチファクトからではなく、完了しなければならなかった

その後、 pomを使用して 別のフォルダ(libs)にすべての依存関係を作成し、maven-jar-pluginにlibを使ってこのフォルダ(libs)からこれらの依存関係を取得させることができます

ここに私が追加したものがあります:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>copy-dependencies</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory> 
          ${project.build.directory}/libs 
         </outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>libs/</classpathPrefix> 
         <mainClass> 
          org.avalin.optaplanner.main.EmployeeRoster 
         </mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

私のプロジェクトは、 libsフォルダのために別のコンピュータを使用していました。 .jarファイルはプロジェクト内の「ターゲット」フォルダ内にあります。

これは、この問題について十分に文書化された資料を見つけることはほとんど不可能であると思われるか、またはグーグルで吸うかもしれないからです。どちらにしても。

+0

このようなもののためのBeterソリューションは、MavenアセンブリプラグインまたはMavenシェードプラグインです。 .. – khmarbaise

+0

私はすでに両方で試してみましたが、両者は私の依存関係を完全に無視しているようでした。 maven-assembly-pluginの "jar-with-dependencies"は、他の依存関係の中にある依存関係の収集に問題があるように見えるエラーを私に与えました... – Avalin

関連する問題