2017-04-27 11 views
1

TL; DREclipseの輸入依存関係

私はMavenのプロファイルにいくつかの依存関係を宣言する必要がありますし、Eclipseのパッケージを解決することはできません。下の画像の例

全話みんなに

こんにちは:D

今、私は非常に怪しいプロジェクトの状況で働いています。私は、Spring Web MVCベースのWebアプリケーションを開発しています.Google AppEngine DevServerをローカル開発に使用しています.GoEから移行することを真剣に考えています。

プロジェクトがGAEをベースにしている理由は、他の誰かが以前に始めた仕事を単純に続けているからです。

いずれにしても、アプリの機能を開発して高めているうちに、それは欲求エンジンが必要になった時代でした。私はMongoDBを実装することにしました。はい、私は、GAE環境でDatastoreではなく他のものを使用できないことを認識しています。永続層として私はMongoRepositoryを使用しています。今まではすべてが大丈夫です。

テスト時間が到着したときに問題が発生しました。統合テストを実装するために、私はデータを入力するためにNoSQLUnitに加えて、メモリ内のdb、Fake Mongo Fongoを使用しました。

主な問題は、動作するためにmongo javaドライバが必要であり、GAE DevServerが動作しないため、それを宣言することも他のJDBC依存関係も宣言できません。私は、統合テストでFongo経由で間接的にではなく、私のアプリでjava-mongo-driver anywareを使用しません。

解決策は、すべてのテストソースのコンパイルをスキップして別のMavenで宣言することです。ローカルサーバーにデプロイするたびに、すべてのテストをスキップします。 JaCoCoを使ってCIとSonarQubeにJenkinsを使っているので問題はありません。そこでテストを実行するだけです。 mvn clean install -Dmaven.test.skip=true私ができるよう

は今、私は一般的なセクション内のすべてのアプリケーションの依存関係を持つ私のpom.xmlを持っているし、私は次のように<profile>宣言している。だから、私はできmvn clean test -Ptestingジェンキンスが検出するたび

<profile> 
      <id>testing</id> 
      <dependencies> 
       <dependency> 
        <groupId>com.github.fakemongo</groupId> 
        <artifactId>fongo</artifactId> 
        <version>2.0.12</version> 
        <scope>test</scope> 
       </dependency> 
       <dependency> 
        <groupId>com.lordofthejars</groupId> 
        <artifactId>nosqlunit-mongodb</artifactId> 
        <version>0.7.7</version> 
        <scope>test</scope> 
       </dependency> 
       <dependency> 
        <groupId>org.mongodb</groupId> 
        <artifactId>mongo-java-driver</artifactId> 
        <version>3.4.2</version> 
       </dependency> 
      </dependencies> 
      <build> 

       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.20</version> 
         <configuration> 
          <junitArtifactName>junit:junit</junitArtifactName> 
          <encoding>UTF-8</encoding> 
          <inputEncoding>UTF-8</inputEncoding> 
          <outputEncoding>UTF-8</outputEncoding> 
         </configuration> 
        </plugin> 
       </plugins> 

      </build> 
     </profile> 

押す。

問題はプロファイルで宣言されているため、インポートが解決されないため、Eclipseでコードを書くことができません。例えば。 Eclipse can't resolve dependencies declared in a Maven profile

Mavenプロファイルで宣言したパッケージをインポートして使用するにはどうすればよいですか?

ありがとうございました:)私は多分あるか、同じ問題を通して行くことになる他の誰かがそれを見つけることができる完全な話をすることを決め

P.Sを.:。プロファイルを定義したりテストをスキップするのではなく、java-mongo-driverとGAEに対する解決策は見つかりませんでした。

+0

、あなたは(ポンポンが言っていることに加えて)Eclipseのプロジェクトのクラスパスの設定に手動で不足している依存関係を追加してみてくださいすることができます。 – Thilo

+0

それはIDEの問題なので、私はそれについても考えていました。本当に私を驚かせるのは、私がグーグルで解決策を見つけることができないということです – Razvi

答えて

1

解決策が見つかりました。

M2Eclipseはアクティブなプロファイルで動作しており、デフォルトではアクティブではありません。プロファイルを宣言するとき、それを使って作業したい場合や、明らかにEclipseで宣言した依存関係をアクティブにする必要があります。そうするためには、あなた必要があります:

  1. 右プロジェクト>のMaven>選択Mavenのプロファイルをクリックして...

    enter image description here 2.

単にあなたにインポートするすべてのプロファイルを選択あなたの仕事場。 (チェックボックス)

enter image description here 3.ジョブが完了しました。回避策として

enter image description here

関連する問題