DEV Community

Marcos Henrique
Marcos Henrique

Posted on

Building 3rd party JARs in Spring (Maven project)

I had an external .jar that cannot be imported from public repositories using pom.xml, it's XPTO.jar.

I was able to run the project locally from my IDE and everything worked perfectly. Refer to the library after downloading it as follows:

<dependency>
    <groupId>com.xpto.lib</groupId>
    <artifactId>XPTO</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/XPTO.jar</systemPath>
</dependency>
⭐ Must Read: wakeupmh/building rd party jars in spring maven project mjh - สรุปดราม่าล่าสุด ⭐ Must Read: wakeupmh/building rd party jars in spring maven project mjh - สรุปดราม่าล่าสุด

When I run mvn clean package to create my .jar file and try to run the created .jar, an error will pop up.

I was facing this error and about getting crazy before finding this solution.

Miracle Solution 🙆‍♂️🙆‍♀️

In your pom.xml just add this <includeSystemScope>true</includeSystemScope> like this

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <classifier>exec</classifier>
            <includeSystemScope>true</includeSystemScope>
        </configuration>
    </plugin>
</plugins>
⭐ Must Read: wakeupmh/building rd party jars in spring maven project mjh - สรุปดราม่าล่าสุด ⭐ Must Read: wakeupmh/building rd party jars in spring maven project mjh - สรุปดราม่าล่าสุด

The IDE can easily see the scope of the system by default, however when generating our build we have to force the maven to see this same scope.

Top comments (1)

⭐ Must Read: wakeupmh/building rd party jars in spring maven project mjh - สรุปดราม่าล่าสุด
 
khmarbaise profile image
Karl Heinz Marbaise •

The last sentence is not accurate. You are forcing the spring-boot-maven-plugin to consider system scoped dependencies not Maven itself. Apart from that the usage of <scope>system</scope> will produce a WARNING during the build (since maven.apache.org/docs/3.5.2/releas...).