Maven项目不与其他项目合作

时间:2015-02-13 00:06:51

标签: java eclipse maven jar

我有一个使用http common-logging.jar,httpclient-4.4-alpha1.jar,httpcore-4.4-alpha1.jar,httpmime-4.4-alpha1.jar的Java项目。我将我的Java项目转换为Maven项目,并将上面的jar文件添加到我的pom.xml中。这是我的XML文件:

<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/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>MyClient</groupId>
<artifactId>MyClient</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>   
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20090211</version>
    </dependency>

 </dependencies>
 <build>
  <sourceDirectory>src</sourceDirectory>
</build>

 </project>

我做了Run As&gt; Maven Clean and Run As&gt; Maven Install并构建了该项目。它在名为MyClient-0.0.1-SNAPSHOT.jar的目标文件夹中生成了一个jar文件。我将这个jar添加到另一个使用这个jar文件的项目(进行HTTP调用),我得到了错误

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/http/entity/mime/content/ContentBody

有人能告诉我是什么原因引起的吗?这似乎是一个依赖问题?有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:1)

Maven不会自动将这些依赖项打包到您的jar文件中。这些文件仅用于编译代码并构建jar文件本身。作为jar plugin州的文档:

  

由此产生的&#39; jar&#39; file包含已编译的java类文件以及src / main / resources中的文件。

您有多种选择:

  1. 将MyClient jar文件打包为&#34; fat&#34;使用maven shade plugin
  2. 之类的jar
  3. 将MyClient POM中的依赖项添加到使用jar文件的项目中的POM。
  4. 使用具有公共父项的maven多模块项目,以便在项目之间解决此类传递依赖项。
  5. 复制MyClient jar文件时手动复制所有这些jar文件