Eri*_*ick 43 maven spring-boot
我有一个外部.jar,无法使用pom.xml从公共存储库导入,它是sqljdbc41.jar
.
我可以从我的IDE本地运行项目,一切都会工作.下载之后我引用了库,如下所示:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sqljdbc41.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我运行mvn clean package
创建我的.jar文件并尝试运行创建的.jar时,会弹出一个错误,提到SQL Server引用无效.然后,我提取了我的.jar文件,并且确实,pom.xml
文件中引用的所有内容都被正确下载并添加,但是,我的SQL Server没有.
我可以,以一种非常hacky的方式*只需sqljdbc41.jar
在编译为.jar后手动添加到我的/ lib文件夹,它就可以工作,但这似乎非常不理想.什么是更好的方法?
*打开用WinRAR .jar文件,去/ lib文件夹,手动选择我的sqljdbc41.jar
文件,然后确保选择无压缩选项左下方那里的Winrar为您提供了压缩选项,如果你通过谷歌找到这一点,没有人回答.
小智 81
你可以将'includeSystemScope'设置为true.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
小智 21
您可以在本地存储库中安装sqljdbc41.jar:
mvn install:install-file -Dfile=path/to/sqljdbc41.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc41 -Dversion=4.1 -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)
然后将依赖项声明为标准依赖项:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果您使用远程工件存储库(nexus,archiva ...),则还需要在此存储库上部署工件.你可以在这里找到更多:https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html
另一种方法,你可以把它放到resources文件夹中,比如resources/lib/xxx.jar,然后像这样配置pom.xml:
<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>
Run Code Online (Sandbox Code Playgroud)
这个对我有用:
project {root folder}/libs/ojdbc-11.2.0.3.jar
Run Code Online (Sandbox Code Playgroud)
pom.xml:
project {root folder}/libs/ojdbc-11.2.0.3.jar
Run Code Online (Sandbox Code Playgroud)
当Spring-Boot项目与 maven 或 gradle 插件一起使用时,它们默认将应用程序打包为可执行 jar。这些可执行 jar 不能在任何其他Spring-Boot项目中用作依赖项,因为可执行 jar 在BOOT-INF/classes文件夹中添加类。这意味着当可执行 jar 用作依赖项时无法找到它们,因为依赖项 jar 也将具有相同的类路径结构,如下所示。
如果我们想使用项目 A 作为项目 B 中的 Maven 依赖项,那么我们必须有两个工件。为了生成两种工件(一种可用作依赖项,另一种是可执行的),必须指定一个分类器。该分类器应用于可执行存档的名称,保留默认存档用作依赖项。要在Maven中配置exec的分类器,可以使用以下配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
所以这里的MAJIC WORD是<classifier>exec</classifier>
这将创建一个如下的jar结构,然后它可以很容易地被spring-boot项目用作类路径上的maven依赖jar。
上述插件需要添加到项目 A pom 中,该 pom 将用作项目 B 中的依赖项。Spring文档第 16.5 节对此进行了同样的解释。以及。
归档时间: |
|
查看次数: |
51034 次 |
最近记录: |