maven - springbootapplication - spring boot multi module
Agregue la biblioteca externa.jar a Spring boot.jar interno/lib (5)
En Spring Boot: También me enfrenté a un problema similar y debajo del código me ayudó.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.7.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
Tengo un .jar externo que no se puede importar desde repositorios públicos usando pom.xml, es sqljdbc41.jar
.
Puedo ejecutar el proyecto localmente desde mi IDE, y todo funcionará. Me referí a la biblioteca después de descargarla así:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sqljdbc41.jar</systemPath>
</dependency>
Cuando mvn clean package
para crear mi archivo .jar e intento ejecutar el .jar creado, aparecerá un error que menciona que las referencias de SQL Server no son válidas. Luego extraje mi archivo .jar y es lo suficientemente cierto, todo lo que se menciona en el archivo pom.xml
se descarga y agrega correctamente, sin embargo, mi servidor SQL no lo hace.
Puedo, de una manera muy intrincada * simplemente agregar manualmente el sqljdbc41.jar
a mi carpeta / lib después de que se haya compilado como un .jar, y funcionará, sin embargo, parece muy poco óptimo. ¿Cuál sería un mejor enfoque?
* Abriendo el archivo .jar con Winrar, yendo a la carpeta / lib, seleccionando manualmente mi archivo sqljdbc41.jar
, luego asegúrese de seleccionar la opción Sin compresión abajo a la izquierda, donde Winrar le ofrece opciones de compresión, en caso de que encuentre esto en Google y nadie respondió.
En mi caso, la falla fue proporcionar un número de versión sin "punto" en la etiqueta:
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<scope>system</scope>
<version>1</version>
<systemPath>${basedir}/src/main/resources/lib/tools.jar</systemPath>
</dependency>
Éste funciona:
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<scope>system</scope>
<version>1.8</version>
<systemPath>${basedir}/src/main/resources/lib/tools.jar</systemPath>
</dependency>
Podría instalar el sqljdbc41.jar en su repositorio local:
mvn install:install-file -Dfile=path/to/sqljdbc41.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc41 -Dversion=4.1 -Dpackaging=jar
Y luego declare la dependencia como una dependencia estándar:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
</dependency>
Si usa un repositorio de artefactos remoto (nexus, archiva ...) también necesita implementar el artefacto en este repositorio. Puede encontrar más aquí: https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html
de otra manera, puede ponerlo en la carpeta de recursos, como resources / lib / xxx.jar, y luego configurar el pom.xml de esta manera:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/sqljdbc41.jar</systemPath>
puede establecer ''includeSystemScope'' en true.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>