2017-04-27 30 views
1

TL宣佈的Eclipse進口的依賴; DR了在一個Maven檔案

我必須在Maven的配置文件聲明一些依賴性和Eclipse是不能夠解決的包。下圖中的示例。

全文

嗨給大家:d

現在我在一個非常可疑的項目情況工作。我正在開發一個基於Spring Web MVC的Web應用程序,並且我正在使用Google AppEngine DevServer進行本地開發,即使我正在認真考慮從GAE遷移出於非常明顯的原因。

爲什麼項目是基於GAE的原因是因爲我只是繼續工作別人開始時間前。

不管怎麼說,在開發和增加應用功能,它來到這裏persitence引擎成爲需要時間。我決定實現MongoDB,是的,我知道你不能在GAE環境中使用任何其他東西而不是Datastore。作爲持久層我正在使用MongoRepository。到現在爲止,一切都很好。

測試時間到了時出現問題。爲了實施集成測試,我使用了內存數據庫Fake Mongo Fongo以及用於數據填充的NoSQLUnit

主要問題是Fongo需要蒙戈Java驅動程序爲了工作,我不能把它聲明,也沒有任何其他JDBC的依賴,因爲GAE DevServer將無法正常工作。我不在應用程序中使用java-mongo-driver軟件,而不是通過Fongo在集成測試中間接使用。

的解決方案是簡單地跳過所有的測試源代碼編譯並在一個單獨的Maven宣佈他們所以每次我要在本地服務器我直接跳過所有的測試上部署。這不是問題,因爲我使用Jenkins的CI和SonarQube進行覆蓋(使用JaCoCo),因此我可以在那裏簡單地執行測試。

現在,我有我的與普通部分所有應用依賴的pom.xml這樣我就可以mvn clean install -Dmaven.test.skip=true,然後我有一個<profile>聲明如下:

<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> 

,所以我可以mvn clean test -Ptesting每當詹金斯檢測推。

的問題是,我不能在Eclipse中寫代碼,因爲自從他們的輪廓正在宣佈它不能解決進口。例如。 Eclipse can't resolve dependencies declared in a Maven profile

如何導入和使用我在Maven配置文件中聲明的包?

謝謝:)

P.S:我決定告訴完整的故事,所以也許別人誰是或將要通了同樣的問題可以找到它。我沒有找到java-mongo-driver和GAE的解決方案,而不是定義配置文件和跳過測試。

+0

作爲一種變通方法,您可以嘗試手動添加缺少的依存關係到Eclipse項目的classpath設置(除POM說的話)。 – Thilo

+0

我也在想這個,因爲這是一個IDE問題。真正令我驚訝的是,我無法找到解決方案 – Razvi

回答

1

找到了解決辦法。

原來,M2Eclipse正在使用活動配置文件,並且默認情況下它們不是活動的。當你聲明一個配置文件時,如果你想使用它,顯然,他在Eclipse中聲明的依賴關係,你必須激活它。爲了做到這一點,你必須:

  1. 右鍵點擊你的項目>的Maven>選擇Maven的文件...

enter image description here 2.只需選擇你要導入配置文件你的工作區。 (複選框)

enter image description here 3.工作完成。

enter image description here