2017-02-08 21 views
2

既存のプロジェクトをantからmavenプロジェクトに変更しました。 これまでのところとても良いです。Maven:型を解決できません。これは間接的に必要な.classファイルから参照されます

すべてのプロジェクトに同じgroupIdがあります。 名前が「ServerBase」でartifactIdが「server-base」のプロジェクトです。このプロジェクトの中で は抽象クラスをtheresのを経由してロガーを定義する「BaseService」:

import org.jboss.logging.Logger; 
[...] 
protected Logger log = Logger.getLogger(this.getClass()); 

は名前「サーバー」とたartifactId「サーバー」と別のプロジェクトをtheresの。 このプロジェクト内では、上記のBaseService-Classを拡張するConfigurationDAOImplクラスがあります。 ConfigurationDAOImpl内では、出力を作成するためにログ出力ログが使用されます。

私が宣言した「サーバ」のPOMファイル内:ビルドパスの下

<dependency> 
     <groupId>com.tcom.amadeus</groupId> 
     <artifactId>server-base</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

を依存性がMavenDependenciesの下で非常に素晴らしい示されています。私は古いパス/自然/ ant-dependencyをビルドパスから削除しました。私はそれを削除した場合 私は など不足しているクラスについて非常に多くのエラーを取得しています。しかし、私は(タブマーカー下)日食にfollowinエラーを取得しています。この依存関係を持っているものの:

The type org.apache.commons.logging.Log cannot be resolved. It is indirectly referenced from required .class files 

Resource: ConfigurationDAPImpl.java 

Path: /Server/src/main/... 

Location: Line 24 

Type: Java Problem 

私は依存関係を削除してみましたそれをもう一度追加しますが運がありません。 どちらのプロジェクトもJAVA 1.8を参照しています。 両方のプロジェクトがビルドされ、ターゲットを複数回クリーンします。 両方のプロジェクトがRighclickまたはF5キーを押して更新されました。 私はEclipse版を使用しています:Neon.1a Release(4.6.1) 私はapache-maven-3.3.9を使用しています 私はm2eプラグインを使用しています。

これ以上のお役に立てれば助かります。 ありがとうございます。

+0

コマンドラインで作ってみる:私は明示的にポンポンファイルサーバー内この依存関係を追加するとき – khmarbaise

+0

は助けることがなかった... MVNクリーンパッケージ: のjboss-ロギングをorg.jboss.logging エラーが表示されません。しかし、この依存関係は依然としてサーバーベースのpomファイル内で定義されており、サーバーベースからサーバーベースへの依存関係を追加して、推移的な方法でサーバーベースからすべての依存関係を取得することを期待しているため、私が間違っている? – Kaspatoo

+0

ok私はそれを持っていると思う 私はサーバーベースのPOMファイル内で話している依存関係は、スコープを持っている:提供、それを消すとき(デフォルトを使用するようにつながる)または 'コンパイル'デフォルト)、エラーも消えます。 私は今、scopeコンパイルがデプロイメントを見ているかどうかを調べるつもりです(ターゲットアプリケーションサーバにはまだ独自のjarがあるので、jarファイルもデプロイしたくないかもしれません)。 ありがとうございます。私は、サーバのMavenの依存関係の下で見ることができます – Kaspatoo

答えて

1

この「解決」への2つの方法があります。

1) が明示的にポンポン・ファイルサーバー・プロジェクト内で必要依存関係を追加します。

<dependency> 
    <groupId>org.jboss.logging</groupId> 
    <artifactId>jboss-logging</artifactId> 
</dependency> 

2)のSCOPを変更 サーバベースプロジェクトのpomファイル内での依存性の必要性は、 'コンパイル'に '提供'するか、デフォルトのスコープをmaven(これは私が 'コンパイル'していると思います)で使用するようにスコープタグをすべて消去します。

旧:

<dependency> 
    <groupId>org.jboss.logging</groupId> 
    <artifactId>jboss-logging</artifactId> 
    <scope>provided</scope> 
</dependency> 

新しい:

<dependency> 
    <groupId>org.jboss.logging</groupId> 
    <artifactId>jboss-logging</artifactId> 
    <scope></scope> 
</dependency> 

か:

<dependency> 
    <groupId>org.jboss.logging</groupId> 
    <artifactId>jboss-logging</artifactId> 
</dependency> 

ドキュメントからこれまでいくつかの背景:

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies

これはコンパイルとよく似ていますが、実行時にJDKまたはコンテナが依存関係を提供すると予想されることを示します。例えば、 Java Enterprise EditionのWebアプリケーションを構築する場合、 は、サーブレットAPIと関連するJava EE API への依存関係を、Webコンテナによって提供されるスコープに設定します。 このスコープは、コンパイルおよびテストのクラスパス でのみ使用でき、推移的ではありません。

ありがとうございます。

0

あなたのserver-baseプロジェクトからApacheロギングライブラリが移行されていないようです。 MavenDependenciesのプロジェクトservercommons-logging(Apacheロギング)のjarが表示されていることを確認してください。そうでなければ、server-baseプロジェクトにあなたの依存関係を追加してください。

server-baseが依存するすべてのジャーについて上記を繰り返します。

+0

: のjboss-ロギング3.3.0.Final-のredhat-1.jar コモンズ・ログ-1.2.jar このロガー・オブジェクトの上に述べたように問題を持つ唯一のものです。 もしそこにいなければ私はserver-projectもクラス "BaseService"内にエラーを表示すべきだと思います。 – Kaspatoo

+0

私はあなたのサーバーベースがantベースのプロジェクトであると考えていました。 – GauravJ

+0

すべてのプロジェクトはMavenでビルドされています – Kaspatoo

関連する問題