2016-07-01 10 views
0

Ich brauche deine Hilfe. Ich muss ein Skript schreiben, das Versionen von Unterprojekten zu MANIFEST.MF Datei während der Bauanwendung von Maven hinzufügt.Maven fügen meine eigenen Informationen während der Erstellung zu MANIFEST.MF-Datei

Ich schreibe einige Mojo-Klasse, die Informationen bekommt, die ich brauche (ich nannte es GenerateVersionPropertyFile.class). Jetzt muss ich wissen, wie man diese Informationen in die Manifest-Datei legt.

Hier ist meine pom.xml:

<build> 
    <finalName>${project.artifactId}</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ejb-plugin</artifactId> 
      <configuration> 
       <ejbVersion>3.1</ejbVersion> 
       <generateClient>true</generateClient> 
       <archive> 
        <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> 
        <!-- 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib</classpathPrefix> 
        </manifest> 
        --> 
        <manifestEntries> 
         <Built-By /> 
        </manifestEntries> 
        <manifestSections> 
         <manifestSection> 
          <Name>appName</Name> 
          <manifestEntries> 
           <Implementation-Title>${project.name}</Implementation-Title> 
           <Implementation-Version>${project.version}</Implementation-Version> 
           <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 
           <Implementation-Vendor>${project.organization.name}</Implementation-Vendor> 
          </manifestEntries> 
         </manifestSection> 
         <manifestSection> 
          <Name>exampleApp</Name> 
          <manifestEntries> 
           <Implementation-Title>exampleEntry</Implementation-Title> 
           <Implementation-Version>dupa2</Implementation-Version> 
           <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 
           <Implementation-Vendor>${project.organization.name}</Implementation-Vendor> 
          </manifestEntries> 
         </manifestSection> 
        </manifestSections> 
       </archive> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.1.1</version> 
      <executions> 
      <execution> 
      <phase>test</phase> 
      <goals> 
       <goal>java</goal> 
      </goals> 
      <configuration> 
       <mainClass>maven.GenerateVersionPropertyFile</mainClass> 
       <arguments> 
       <argument>${project.basedir}\src</argument> 
       <argument>${project.build.directory}</argument> 
       </arguments> 
      </configuration> 
      </execution> 
      </executions> 
      </plugin> 
    </plugins> 
</build> 

<profiles> 
    <profile> 
     <id>server-ejb-build-devel</id> 
     <activation> 
      <property> 
       <name>build-devel</name> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-ejb-plugin</artifactId> 
        <configuration> 
         <archive> 
          <manifestSections> 
           <manifestSection> 
            <Name>app1</Name> 
            <manifestEntries> 
             <Implementation-Build>${buildNumber}</Implementation-Build> 
             <Implementation-Timestamp>${timestamp}</Implementation-Timestamp> 
            </manifestEntries> 
           </manifestSection> 
          </manifestSections> 
         </archive> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 
+0

, warum Sie eine Java-Klasse verwenden Sie es nicht direkt von den Etiketten-Submodul pom Version? – Apostolos

+0

Sorry mayby ​​Ich habe es falsch beschrieben. Als ich Teilprojekte gesagt habe, denke ich über JSON-Schemas aus dem Projekt nach. Ich muss diese Dateien analysieren und Informationen von ihnen erhalten, also benutzte ich Java-Klasse zu diesem. – user2420602

+0

hmm eine chance, um grandle zu bewegen? es ist sehr mächtig für solche Dinge. nur ein Gedanke – Apostolos

Antwort

0

Haben die maven-jar-Plugin auf Ihrem pom zu verwenden.

Beispiel

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <archive> 
     <manifest> 
     <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
     <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
     </manifest> 
     <manifestEntries> 
     <key>value</key> 
     </manifestEntries> 
    </archive> 
</configuration> 
</plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ejb-plugin</artifactId> 
      <version>${maven-ejb-plugin.version}</version> 
      <configuration> 
       <ejbVersion>3.1</ejbVersion> 
      </configuration> 
     </plugin> 
Verwandte Themen