Quando se empacota um .jar no maven através do comando assembly:assembly, dependendo da configuração, o maven gera, além do .jar habitual, um arquivo .zip contendo todas as libs utilizadas pelo projeto. Estava estudano esse comando assembly:assembly, e encontrei o seguinte erro:
Embedded error: Problem creating jar: [...]/target/classes (Is a directory)
Percebi que o problema ocorria em projetos sem nenhuma dependência, ou apenas o junit, que é declarado com o escopo test. O que é muito justo, afinal a minha configuração era para gerar o tal .zip com as dependências, como o projeto não tinha nenhuma, o erro já era previsto. Para solucionar adicionei uma tag para um jar bem pequeno e o comando foi executado com sucesso, ou então simplesmente retirei o comando porque ele não era necessário.
Para adicionar o plugin maven-assembly no projeto, basta declará-lo no pom.xml dizendo qual arquivo possui as configurações do assembly e criar o arquivo package.xml dentro da pasta onde ele se encontra, ex: /src/mais/assembly.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-4</version> <configuration> <descriptors> <descriptor>${basedir}/src/main/assembly/package.xml</descriptor> </descriptors> </configuration> </plugin> <plugins> <build>
<?xml version="1.0" encoding="UTF-8"?> <assembly> dist</id> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <directory>${basedir}/src/main/resources</directory> <outputDirectory>/</outputDirectory> </fileSet> </fileSets> <files> <file> <source>target/${project.artifactId}-${project.version}.jar</source> <outputDirectory>/</outputDirectory> <destName>${project.artifactId}.jar</destName> </file> </files> <dependencySets> <dependencySet> <useProjectArtifact>false</useProjectArtifact> <outputDirectory>lib</outputDirectory> </dependencySet> </dependencySets> </assembly>
Com essas configurações, ao rodar o comando mvn assembly:assembly, será criado um pacote .zip dentro da pasta target do projeto contendo o .jar e as libs