[RESOLVIDO] Maven - Gerar .jar Executável

Boa noite a todos,

Estou iniciando agora no Maven e me deparei com o problema de criar um executável. Tipo… Já pesquisei, “googleei” bastante, mas não consegui fazer com que o Maven gerasse um .jar executável. Ele até cria o arquivo .jar, mas não executa, utilizando o comando

java -jar nome_do_jar -cp

O sistema diz que não encontra a classe principal, abaixo segue o manifest gerado:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Juba
Build-Jdk: 1.7.0
Main-Class: forms.FrmPrincipal
Class-Path: lib/postgresql-9.1-901.jdbc4.jar

Realmente a Main-Class é a minha classe principal e se encontra no pacote forms, mas mesmo assim não roda. Abaixo segue o meu arquivo pom.xml:

<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>Projeto.Auxiliar</groupId>
	<artifactId>Proj.Aux.Copia</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<ciManagement>
		<system>VisualSVN</system>
		<url>https://juba-note/svn/Projetos_Auxiliares/</url>
	</ciManagement>
	<dependencies>
		<dependency>
			<groupId>postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>9.1-901.jdbc4</version>
		</dependency>
		<dependency>
			<groupId>br.com.Libs</groupId>
			<artifactId>commons.utils</artifactId>
			<version>1.0</version>
			<scope>system</scope>
			<systemPath>c:\Libs\LayoutAuxiliares.jar</systemPath>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<addMavenDescriptor>false</addMavenDescriptor>
						<manifest>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
							<mainClass>forms.FrmPrincipal</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

	</build>


</project>

Agradeço pela ajuda

Jubarius

Olá amigo, eu também ja tive um problema assim.

Só resolvi depois de editar o jar gerado com o maven da seguinte forma:

abra seu arquivo jar com o winrar e depois clique no arquivo manifest.mf

com ele aberto vc adiciona a seguinte linha no final do arquivo:

Main-Class: seupacote.Main

onde Main no meu caso é a classe Main do projeto.

Se sua classe main estiver na raiz src, ou seja estiver fora de um pacote especifico vc coloca assim:

Main-Class: Main

em seguida vc fecha o arquivo, ele vai predir pra salvar e v confirma,
na sequencia o winrar vai perguntar se vc quer salvar a alteração no arquivo jar e vc tb confirma.

pronto agora pode rodar com o java -jar seuArquivo.jar

fica a dica
Fallow

Boa noite,

Meu amigo Paulo valeu pela força. Você mirou no que viu e acertou no que não viu, realmente o problema era no manifest, mas na parte das libs.

Putz… Se você não dá o toque de editar o dito cujo do manifest eu nunca iria adivinhar, e olha que eu até postei o dito mas não tinha visto o erro (acredito que a lib não foi incluída porque era do tipo system).

Mais uma vez obrigado, tô desde ontem tentando descobrir o erro, valeu mesmo.

Juba

@galera,
(Antes de qq coisa, foi mal aê restartar a thread, q já tava c/ Tag “[RESOLVIDO]”, :oops: mas…)

Mas, é q eu já googlei, procurei em tudo quanto é lugar, mas infelizmente s/ sucesso.
É o seguinte: assim como o .POM postado pelo colega Jubarius, só eu gostaria de 1 script/plugIn q, em vez de gerar MANIFEST.MF dinamicamente, eu gostaria de q o MAVEN apenas copiasse o ‘MANIFEST.MF’ criado/definido (fisicamente) no diretório ‘META-INF’, “empacotando-o” para dentro do .JAR .

Tem jeito???!

Galera, pirei a mente :roll: , será q alguem pode me ajudar nisso?!