2013-03-20 14 views
5

W ramach mojego projektu mam automatyczny updater podprojektu. Zasadniczo plik jar, który jest wyodrębniany i uruchamiany, gdy aktualizacja jest dostępna.Dodawanie słoja innego projektu jako zasobu przy użyciu Maven

Czy to możliwe, aby skompilować podprojektu, a następnie umieścić outputted słoik jako generated-resource tak że updater.jar jest zawarta w końcowym słoika, takie jak:

Project-1.0.jar 
|-updater.jar 
    |-Main.class 
    |-B.class 

Dzięki z góry za wszelką pomoc (I "Jestem nowy w Maven)

Odpowiedz

3

To zadanie woła maven-assembly-plgin lub maven-dependency-plugin

(Spodziewam się, że Updater jest również maven project) ta opcja powinna być poprawną konfiguracją dla wtyczki zależnej od mavenów [nie testowałem tego, może być również konieczne wstawienie aktualizacji do deptencies projektu]

<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.7</version> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
       <artifactItem> 
        <groupId>company.com.project</groupId> 
        <artifactId>Updater</artifactId> 
        <version>0.0.1-SNAPSHOT</version> 
        <type>jar</type> 
        <outputDirectory>${project.build.outputDirectory}/classes</outputDirectory> 
        <destFileName>updater.jar</destFileName> 
       </artifactItem> 
       </artifactItems> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 
0

Byłoby miło, gdyby twój mały słoik również został zbudowany z Mavenem. Następnie załóżmy, że mały słoik POM zawiera to:

<groupId>company.com.project</groupId> 
<artifactId>Updater</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

Wtedy twój Project-1,0 powinna wykorzystać tę zależność:

<dependency> 
    <groupId>company.com.project</groupId> 
    <artifactId>Updater</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</dependency> 
+0

OP chce włączyć swój updater do finalnego słoja, nie dodając go jako zależności. –

+0

Przepraszamy, pytanie prawdopodobnie zostało zaktualizowane, gdy pisałem odpowiedź. –

+0

Przyjaciele, SO w zaćmieniu, jeśli mamy oba projekty w tym samym obszarze roboczym, czy możemy po prostu dodać zależność? Żadne dziecko rodzicielskie (multi-maven) nie jest wymagane? , Dodałem po prostu dodatki takie jak @PauloPedroso, ale dostaję brakujący artefakt. Próbowałem wyczyścić/zbudować wszystkie projekty, jakiś czas to znika, a teraz jest błąd ... Proszę, pomóż mi. –

0

dodać projekt sub do projektu nadrzędnego następująco

<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>1.0.0</modelVersion> 
    <groupId>Project-1.0</groupId> 
    <artifactId>myproject</artifactId> 
    <packaging>pom</packaging> 

    <version>1.0-SNAPSHOT</version> 

    <name>Project-1.0</name> 

    <modules> 
     <module>../updater</module> 
    </modules> 

    ... 
</project> 

Następnie w pliku aktualizacji projektu pom zmieniają się następujące ustawienia:

<?xml version="1.0"?> 
<project> 
    <parent> 
    <artifactId>myproject</artifactId> 
    <groupId>Project-1.0</groupId> 
    <version>1.0-SNAPSHOT</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>Project-1.0</groupId> 
    <artifactId>updater</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    ... 

</project> 

Podczas kompilacji projektu nadrzędnego projekt potomny zostanie automatycznie skompilowany.

Następnie dodać sub słoik projektu w słoiku, dodać następujące wtyczki w macierzystej pom.xml

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>process-resources</phase> 
     <configuration> 
      <tasks> 
      <copy todir="${project.build.directory}/lib"> 
       <fileset dir="${location of updater1.0.jar}"/> 
      </copy> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
Powiązane problemy