Ho esaminato tutto ciò che riesco a trovare su StackOverflow e non sono riuscito a trovare una risposta. Ho appena costruito una nuova macchina e ho dei progetti che sono stati compilati e costruiti su installazioni precedenti. Ma la mia nuova macchina no. Tutto sembra costruire correttamente (nessun errore di compilazione, incluse le dipendenze correttamente), ma i file di classe reali (codice che ho scritto) dal mio progetto non sono inclusi nel jar. Ho quindi creato un semplice progetto helloWorld con un po 'di quanto il file POM minimo per vedere del problema esiste ancora. Ho creato la build dalla riga di comando per eliminare Eclipse dall'equazione.Maven Build non include il file .class nel barattolo
Codice Classe
package com.zoverge.utils;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
String message = args[0];
System.out.println(message);
}
}
Il mio file POM
<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>4.0.0</modelVersion>
<groupId>com.zoverge.utils</groupId>
<artifactId>helloworld</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>Hello World</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.java.version>1.6</project.build.java.version>
<org.apache.maven.plugins.maven-compiler-plugin.version>2.5.1</org.apache.maven.plugins.maven-compiler-plugin.version>
</properties>
<build>
<plugins>
<!-- Maven will compile our source java classes using the "project.build.java.version"
specified -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${org.apache.maven.plugins.maven-compiler-plugin.version}</version>
<configuration>
<source>${project.build.java.version}</source>
<target>${project.build.java.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.zoverge.utils.HelloWorld</mainClass>
</manifest>
</archive>
<finalName>HelloWorld</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies/>
</project>
L'accumulo risultante produce 2 file jar (come previsto) HelloWorld-1.0.jar e HelloWorld.jar. Né jar contiene il file di classe compilato per HelloWorld.java. Penso che questo debba essere un problema con il mio ambiente perché questo comportamento è lo stesso per altri progetti che hanno funzionato bene su altre macchine di sviluppo, ma non riesco a capire la differenza. Non ho accesso alla mia precedente macchina di sviluppo per confrontare la configurazione. Il mio .m2/setting.xml è praticamente vuoto.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${user.home}/.m2/repository</localRepository>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
Strano, funziona per me con Maven 3.0.4. –
Dopo aver scavato più a fondo nella mia installazione di Maven ho trovato più istanze (3.0.3 e 2.2.1). Devo ripulire tutto e riprovare ... grazie. –
Nessuna fortuna. Ho fatto una disinstallazione completa e reinstallazione di Maven e aggiornato alla versione più recente (3.0.4) e ancora ottengo un jar senza file di classe e ora il manifest non ha alcun elenco di prima classe. Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Creato-By: Apache Maven Built-In: johnblakie Build-Jdk: 1.6.0_37 –