Maven gera MANIFEST.MF com dados errados

1 resposta
danieldestro

Estou tentando gerar alguns JARs com Maven (package), porém ele coloca dados que não quero na geração do JAR e seu MANIFEST.MF, mesmo eu informando que não quero estas infos.

Podem me ajudar a gerar um JAR sem Classpath e MainClass?

<project ...>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.mycompany</groupId>
	<version>1.0.0</version>
	<name>MyCompany</name>
	<artifactId>myco</artifactId>
	<packaging>war</packaging>

	<properties>
		<xyz-conteiner-classpath>../scripts/ lib/some.jar lib/another.jar</xyz-conteiner-classpath>
	</properties>

	<build>
		<outputDirectory>WebContent/WEB-INF/classes</outputDirectory>
		<pluginManagement>
			<plugins>

			<!-- plugin para gerar o JAR XPTO -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<finalName>xpto</finalName>
					<archive>
						<manifest>
							<mainClass>org.mycompany.AppBootstrapper</mainClass>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
						</manifest>
						<manifestEntries>
							<Class-Path>${xyz-conteiner-classpath}</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!-- Plugin de geração de JAR do cliente do projeto -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<executions>
					<execution>
						<id>xpto-client-jar</id>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
						<configuration>
							<finalName>xpto</finalName>
							<classifier>client</classifier>
							<archive>
								<manifest>
									<addDefaultImplementationEntries>false</addDefaultImplementationEntries>
									<addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
									<addClasspath>false</addClasspath>
								</manifest>
							</archive>
							<includes>
								<include>org/mycompany/**</include>
							</includes>
							<excludes>
								<exclude>**Test.class</exclude>
							</excludes>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

Ele gera dois JARs, com os respectivos MANIFEST.MF

xpto.jar:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_14
Class-Path: ../scripts/ lib/some.jar lib/another.jar [mais-jars-das-dependencias-do-maven]
Created-By: Apache Maven
Main-Class: org.mycompany.AppBootstrapper
Archiver-Version: Plexus Archiver
xpto-client.jar:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_14
Class-Path: ../scripts/ lib/some.jar lib/another.jar
Created-By: Apache Maven
Main-Class: org.mycompany.AppBootstrapper
Archiver-Version: Plexus Archiver

Na verdade eu queria que Class-Path e Main-Class do segundo JAR (cliente) ficasse em branco, como defini.

Dicas?

1 Resposta

danieldestro

Resolvido.

Percebi que se eu usar duas tags <plugin> para gerar JAR, onde uma delas tem uma <configuration> "global", isso afeta. Reorganizei em apenas um <plugin> e vários <execution>.

&lt;project ...&gt;  
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;  
    &lt;groupId&gt;org.mycompany&lt;/groupId&gt;  
    &lt;version&gt;1.0.0&lt;/version&gt;  
    &lt;name&gt;MyCompany&lt;/name&gt;  
    &lt;artifactId&gt;myco&lt;/artifactId&gt;  
    &lt;packaging&gt;war&lt;/packaging&gt;  
&lt;properties&gt;  
        &lt;xyz-conteiner-classpath&gt;../scripts/ lib/some.jar lib/another.jar&lt;/xyz-conteiner-classpath&gt;  
    &lt;/properties&gt;  
  
    &lt;build&gt;  
        &lt;outputDirectory&gt;WebContent/WEB-INF/classes&lt;/outputDirectory&gt;  
        &lt;pluginManagement&gt;  
            &lt;plugins&gt;  
   
            &lt;!-- Plugin de geração de JAR do projeto e do cliente  --&gt;  
            &lt;plugin&gt;  
                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;  
                &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;  
                &lt;version&gt;2.4&lt;/version&gt;  
                &lt;executions&gt;  
                    &lt;execution&gt;  
                        &lt;id&gt;xpto-integration-jar&lt;/id&gt;  
                        &lt;phase&gt;package&lt;/phase&gt;  
                        &lt;goals&gt;  
                            &lt;goal&gt;jar&lt;/goal&gt;  
                        &lt;/goals&gt;  
			&lt;configuration&gt;
				&lt;finalName&gt;xpto&lt;/finalName&gt;
				&lt;classifier&gt;integration&lt;/classifier&gt;
				&lt;archive&gt;
					&lt;manifest&gt;
						&lt;mainClass&gt;org.mycompany.AppBootstrapper&lt;/mainClass&gt;
						&lt;addClasspath&gt;true&lt;/addClasspath&gt;
						&lt;classpathPrefix&gt;lib/&lt;/classpathPrefix&gt;
					&lt;/manifest&gt;
					&lt;manifestEntries&gt;
						&lt;Class-Path&gt;${xyz-conteiner-classpath}&lt;/Class-Path&gt;
					&lt;/manifestEntries&gt;
				&lt;/archive&gt;
			&lt;/configuration&gt;
                    &lt;/execution&gt;  

                    &lt;execution&gt;  
                        &lt;id&gt;xpto-client-jar&lt;/id&gt;  
                        &lt;phase&gt;package&lt;/phase&gt;  
                        &lt;goals&gt;  
                            &lt;goal&gt;jar&lt;/goal&gt;  
                        &lt;/goals&gt;  
                        &lt;configuration&gt;  
                            &lt;finalName&gt;xpto&lt;/finalName&gt;  
                            &lt;classifier&gt;client&lt;/classifier&gt;  
                            &lt;archive&gt;  
                                &lt;manifest&gt;  
                                    &lt;addDefaultImplementationEntries&gt;false&lt;/addDefaultImplementationEntries&gt;  
                                    &lt;addDefaultSpecificationEntries&gt;false&lt;/addDefaultSpecificationEntries&gt;  
                                    &lt;addClasspath&gt;false&lt;/addClasspath&gt;  
                                &lt;/manifest&gt;  
                            &lt;/archive&gt;  
                            &lt;includes&gt;  
                                &lt;include&gt;org/mycompany/**&lt;/include&gt;  
                            &lt;/includes&gt;  
                            &lt;excludes&gt;  
                                &lt;exclude&gt;**Test.class&lt;/exclude&gt;  
                            &lt;/excludes&gt;  
                        &lt;/configuration&gt;  
                    &lt;/execution&gt;  
                &lt;/executions&gt;  
            &lt;/plugin&gt;  
        &lt;/plugins&gt;  
    &lt;/build&gt;  
&lt;/project&gt;
Criado 22 de junho de 2012
Ultima resposta 22 de jun. de 2012
Respostas 1
Participantes 1