2016-07-26 18 views
4

私は2つのmavenモジュール、AppManagerとmyAppを持っています。これらはローカルの同じディレクトリにあり、テスト目的のために会社のオンラインレポでは利用できません。 IntelliJでは、AppManagerのフィールドとメソッドを使用しても問題はなく、エラーメッセージもありません。 myAppのimpl pomファイルにcom.mycompany.appManagerをエクスポートしています。ただし、IDEの外に構築すると、mvn clean installの場合、パッケージcom.mycompany.appManagerが存在しないためエラーが発生し、appManagerで定義されたパブリックフィールドの使用に関する未解決のシンボルにエラーが関連付けられます。どうすればこの問題を解決できますか?私は、エクスポートを試みて、依存関係を追加しましたが、これらの2つのソリューションは動作しません。Mavenビルド失敗:パッケージが存在しません

のpom.xml:

<moduleVersion>4.0.0</moduleVersion> 
<parent> 
    <groupId>com.myCompany</groupId> 
    <artifactId>myApp</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 

<groupId>com.myCompany.myApp</groupId> 
<artifactId>com.myCompany.myApp.impl</artifactId> 
<packaging>bundle</packaging> 
<name>My App Implementation</name> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Export-Package> 
          com.myCompany.appmanager 
        </Export-Package> 
        <Bundle-Activator>com.mycompany.myapp.impl.component</Bundle-Activator> 
       </instructions> 
      </configuration> 
     </plugin> 
    </plugin> 
</build> 

コンパイルエラー:あなたは二つのプロジェクトAとBを持っている場合は

[ERROR] /root/Desktop/apps/myapp/impl/src/main/java/com/mycompany/myApp/impl/component.java:[11,49] package com.mycompany.appmanager does not exist 
[ERROR] /root/Desktop/apps/myapp/impl/src/main/java/com/mycompany/myApp/impl/component.java:[64,49] cannot find symbol 
    symbol: variable AppManagerModule 
    location: class com/mycompany/myApp/impl/component 
+0

pom.xmlと完全なエラーログを投稿してください。 –

+0

欠落しているパッケージは、実際にはランタイム依存性であり、コマンドラインからのコンパイルに失敗します。しかし、Maven IntelliJプラグインはスコープルールを無視し、すべての依存関係を取り除いてコンパイルと実行に成功します。 –

答えて

5

私は限り私はそれを理解し、質問に答えることを試みますAはBに依存するので、まずBを構築しなければなりません。例: mvn clean installを使用すると、B.jarがローカルリポジトリに格納されます。その後、それに対してAを構築することができます(pomで正しいバージョンを選択した場合)。

+0

それはそれをしました!ありがとう – SVN600

0

2つのプロジェクトAとBがあり、AがBに依存する場合は、Bプロジェクトのコードがコンパイル済みのJARファイルに存在することも確認する必要があります。当然のことながら、src/main/java(src/test/javaではなく)にパッケージを書く必要があります。

関連する問題