2016-09-20 5 views
-1

У меня есть проект maven, который должен создавать несколько двоичных файлов. Некоторые из них имеют зависимости от других, а зависимости могут отличаться от двоичных к двоичным.Различные зависимости от нескольких двоичных файлов в проекте Maven

Вопрос: Как достичь этого, не включая каждую зависимость, но только необходимые в каждую банку?

В настоящее время я использую плагин сборки, который выполняет эту работу, за исключением того, что она помещает каждую зависимость в каждую банку. Кроме того, он создает стандартную банку app1-snapshot, которая мне не нужна. Как я могу избавиться от него?

Мой П файл:

<?xml version="1.0" encoding="UTF-8"?> 
<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>antlrtest</groupId> 
    <artifactId>app1</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>thf_test</id> 
         <phase>package</phase> <!-- bind to the packaging phase --> 
         <goals> 
          <goal>single</goal> 
         </goals> 
         <configuration> 
          <archive> 
           <manifest> 
            <mainClass>parsers.THF_test</mainClass> 
           </manifest> 
          </archive> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <finalName>bin/THF_test</finalName> 
         </configuration> 
        </execution> 
        <execution> 
         <id>hmf_test</id> 
         <phase>package</phase> <!-- bind to the packaging phase --> 
         <goals> 
          <goal>single</goal> 
         </goals> 
         <configuration> 
          <archive> 
           <manifest> 
            <mainClass>parsers.HMF_test</mainClass> 
           </manifest> 
          </archive> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <finalName>bin/HMF_test</finalName> 
         </configuration> 
        </execution> 
        <execution> 
         <id>HMF_to_THF</id> 
         <phase>package</phase> <!-- bind to the packaging phase --> 
         <goals> 
          <goal>single</goal> 
         </goals> 
         <configuration> 
          <archive> 
           <manifest> 
            <mainClass>transformation.HMF_to_THF</mainClass> 
           </manifest> 
          </archive> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <finalName>bin/HMF_to_THF</finalName> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

      <!-- antlr --> 
      <plugin> 
       <groupId>org.antlr</groupId> 
       <artifactId>antlr4-maven-plugin</artifactId> 
       <version>4.5</version> 
       <configuration> 
        <arguments> 
         <argument>-package</argument> 
         <argument>parsers</argument> 
        </arguments> 
       </configuration> 
       <executions> 
        <execution> 
         <id>antlr</id> 
         <goals> 
          <goal>antlr4</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.antlr</groupId> 
      <artifactId>antlr4-runtime</artifactId> 
      <version>4.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.antlr</groupId> 
      <artifactId>antlr4-maven-plugin</artifactId> 
      <version>4.5</version> 
      <type>maven-plugin</type> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

</project> 
+0

Связанный (но не дублируемый) объект http://stackoverflow.com/questions/2424015/maven-best-practice-for-generating-multiple-jars-with-different-filtered-classes – YMomb

ответ

0

Как объяснен в https://stackoverflow.com/a/2426271/800413, часто плохая практика, чтобы генерировать несколько артефактов/исполняемые файлы из того же проекта.

В вашем случае, почему бы не иметь несколько проектов, разделяющих основную базу кода как зависимость и создание требуемых двоичных файлов, с соответствующими библиотеками для каждого проекта?

+0

Хм да, я мог бы это сделать , Есть ли возможность создавать несколько проектов mvn одновременно с одной командой? В этом случае должны быть некоторые библиотеки (например, как банки) в каталоге lib и некоторые двоичные файлы в каталоге bin. – Waschbaer

+0

Вы можете создать многопроектную структуру maven, где у вас есть основной проект и модули. При вызове любой команды на основном уровне проекта это применимо ко всем подпроектам и, следовательно, вы можете создать много прожетов в одной команде «mvn package» – YMomb

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

  • Нет связанных вопросов^_^