Javier de la Rosa
Javier de la Rosa

Reputation: 237

How to build a jar from a module of maven with dependencies from other module?

I have some modules in maven, and I want to build a jar of a module which has a dependency of just other module.

How can I include in the jar both modules?

Edit:

I have the followings modules:

  myproject-core/
    myproject-api/
    myproject-dependencie/
    myproject-api-web/

And I want to build a jar in myproject-api with myproject-dependencie. I have more dependencies in myproject-api and I only need to have in this jar myproject-api and myproject-dependencie.

Thanks!

Upvotes: 0

Views: 106

Answers (1)

theINtoy
theINtoy

Reputation: 3668

I guess the maven-shade-plugin will be your friend:

https://maven.apache.org/plugins/maven-shade-plugin/

In you plugins section Something like:

...

    <properties>
        <shade-main-class>{your-main-class}</shade-main-class>
    </properties>

...

...

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
             <includes>
                <include>com/yourcompany/**</include>
              </includes>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>${shade-main-class}</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
...

Upvotes: 1

Related Questions