2014-12-28 2 views
1

У меня есть проект с большим количеством зависимостей hadoop и зависимостей org.json. Я хочу упаковать зависимость org.json только в банку, потому что упаковка зависимостей hadoop вызовет конфликты. Я использую Packaging = Jar, и использование толстой банки не подходит в моем случае. Есть ли способ упаковать только зависимости org.json? Мой зависимости pom.xml раздел:Указать конкретные зависимости в банке

<dependencies> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-hdfs</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-auth</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-common</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- JSON Parser dependency --> 
    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
    </dependency> 

    <!-- Log4J dependency --> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
    </dependency> 

</dependencies> 
+0

Будет Действительно подходит вам? –

+0

положить где? и что он должен делать? –

ответ

0

Отвечая на мой собственный вопрос, может быть, это то, что Thorbjørn Ravn Андерсен имел в виде: для всех зависимостей, я не хочу быть packeged надстройки при условии. Пример:

 <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-core</artifactId> 
      <version>2.0.0-mr1-cdh4.0.1</version> 
      <scope>provided</scope> 
     </dependency> 

и упаковать его в качестве жира банки:

  <!-- Maven Assembly Plugin --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4.1</version> 
      <configuration> 
       <!-- get all project dependencies --> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <!-- MainClass in mainfest make a executable jar --> 
       <archive> 
        <manifest> 
         <mainClass>com.myorg.MyAppMain</mainClass> 
        </manifest> 
       </archive> 

      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <!-- bind to the packaging phase --> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

Edit: , добавив при условии, что во время выполнения зависимости также исключаются из пути к классам, и, таким образом, проект не может работать на моей IDE.

0

Вы можете использовать плагин maven-shade и подробно указывать, что происходит, а что нет; вам не нужно переименовывать что-либо при использовании тени, если вы этого не хотите.

+0

Не могли бы вы показать пример использования? Я попробовал белый список моих желаемых зависимостей или черный список нежелательных, но Uber-Jar по-прежнему включает в себя множество нежелательных зависимостей (некоторые из них - те, которые я пытался избежать от включения) –

Смежные вопросы