2016-02-18 48 views
1

我有我添加使用Maven,並從本地系統的JAR一個Java代碼。現在,當我在不同的系統上運行它時,本地JAR不見了。我如何將所有內容添加到Maven並刪除本地類路徑?依賴遷移到Maven

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.memeanalytics</groupId> 
<artifactId>kafka-consumer-storm</artifactId> 
<packaging>jar</packaging> 
<version>1.1.0</version> 
<name>HibernateExample</name> 
<url>http://maven.apache.org</url> 


<repositories> 

    <repository> 
     <id>github-releases</id> 
     <url>http://oss.sonatype.org/content/repositories/github-releases/</url> 
    </repository> 

    <repository> 
     <id>clojars</id> 
     <url>http://clojars.org/repo</url> 
    </repository> 

    <repository> 
     <id>cloudera-repo-releases</id> 
     <url>https://repository.cloudera.com/artifactory/repo/</url> 
    </repository> 

</repositories> 

<dependencies> 

    <!-- <dependency> <groupId>net.wurstmeister.storm</groupId> <artifactId>storm-kafka-0.8-plus</artifactId> 
     <version>0.4.0</version> </dependency> --> 

    <dependency> 
     <groupId>org.xerial.snappy</groupId> 
     <artifactId>snappy-java</artifactId> 
     <version>1.1.1.3</version> <!-- was 1.1.0-M3 --> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.storm</groupId> 
     <artifactId>storm-kafka</artifactId> 
     <version>0.9.3</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>1.6</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <transformers> 
          <transformer 
           implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>com.sd.dwh.kafka.storm.Invoker</mainClass> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

+0

可以粘貼你的pom.xml嗎? – imrichardcole

+0

增加了...雖然我不知道這將如何幫助 –

+0

以上哪些依賴關係丟失? – imrichardcole

回答

0

解決最簡單的嘗試是:
1.注意所有手動添加到classpath的罐子/依賴(使用IDE或其他方式)
2 。使用maven中央搜索工具(http://search.maven.org/)在公共倉庫中定位這些依賴關係(當然,一個一個)。您使用在線maven搜索找到的結果將包括這些依賴項的pom片段(<dependency>...</dependency>)。將它們複製並粘貼到現有的pom.xml的依賴項部分。 3.刪除基於IDE的類路徑條目。

當然,只有這些依賴關係在公共倉庫中才可以。

+0

這可能不是100%的傻瓜答案...但肯定是我正在尋找的那個。我正是那樣做的,但不知何故忘了刪除預先存在的類路徑。謝謝。! :-) –

1

我不知道你所說的「本地的JAR」的意思。如果您的意思是混合使用Maven依賴關係並手動將JAR添加到IDE中,那麼這是一個非常糟糕的主意。無論您是否使用Maven。如果你使用Maven,一切都應該是Maven的依賴。 https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html 當你添加入本地存儲庫,則可以在你做了所有添加爲依賴關係在你的pom.xml:今後,你需要在每次手動添加罐將Maven的把它加進本地倉庫管理Maven中心的其他依賴關係。

如果你與其他人共享或其他計算機上的項目,你遇到了你在談論的問題。在團隊中(或在本地網絡中),您通常會運行repository manager,如Nexus。當手動添加新的依賴(並且安裝到本地存儲庫)時,通常會將其部署到Nexus,Nexus充當本地網絡與Maven中心之間的代理。然後,您的團隊或本地網絡中的每個人都可以找到這些依賴關係。

0

你可以設置一個Maven倉庫管理像nexus爲當地的發展,其可以代理Maven的中央存儲庫,你可以在它部署自己的圖書館。當你需要在另一個環境上開發時,你可以從你的本地Maven倉庫獲得依賴關係。