我有一个外部的.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>
当我运行mvn clean package
来创建我的.jar文件并尝试运行创建的.jar时,会弹出一个错误,指出SQL Server引用无效。然后我解压缩了我的.jar文件,非常正确,pom.xml
文件中引用的所有内容都正确下载并添加,但是,我的SQL Server没有。
我可以,用一种非常笨拙的方式 *,在sqljdbc41.jar
被编译为.jar后,手动将其添加到我的/lib文件夹中,它会工作,但这似乎非常不理想。还有什么更好的方法呢?
- 用Winrar打开.jar文件,转到/lib文件夹,手动选择我的
sqljdbc41.jar
文件,然后确保选择左下方的无压缩选项,Winrar会给你压缩选项,以防你在谷歌上找到这个,但没有人回答。
8条答案
按热度按时间w8ntj3qf1#
您可以将“includeSystemScope”设置为true。
m1m5dgzv2#
您可以在本地系统信息库中安装sqljdbc41.jar:
然后将依赖项声明为标准依赖项:
如果您使用远程工件存储库(nexus,archiva...),您还需要在此存储库上部署工件。https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html
a1o7rhls3#
另一种方法是,您可以将其放入resources文件夹中,例如resources/lib/xxx.jar,然后按如下方式配置pom.xml:
nkoocmlb4#
在 Spring Boot 中:我也遇到过类似的问题,下面的代码帮助了我。
wd2eg0qa5#
它对我很有效:
pom.xml:
hwamh0ep6#
在我的例子中,错误是提供了一个在标记中没有“点”的版本号:
这一条有效:
oxalkeyp7#
当Spring-Boot项目与maven或gradle插件一起使用时,默认情况下,它们会将应用程序打包为可执行jar。这些可执行jar不能用作任何其他Spring-Boot项目中的依赖项,因为可执行jar会在***BOOT-INF/classes***文件夹中添加类。这意味着当可执行jar用作依赖项时,将无法找到它们,因为依赖项jar也将具有相同的类路径结构,如下所示。
如果我们想使用项目A作为项目B中的Maven依赖项,那么我们必须有两个工件。要生成这两个工件,一个可以用作依赖项,另一个是可执行的,必须指定分类器。此分类器应用于可执行存档的名称,保留默认存档用作依赖项。要在Maven中配置exec分类器,可以使用以下配置:
因此,这里的MAJIC WORD是
<classifier>exec</classifier>
,这将创建一个如下所示的jar结构,然后它很容易被spring-boot项目混淆为类路径上的maven依赖jar。上述插件需要添加到项目A pom中,作为项目B中的依赖项。Spring文档第16.5节也对此进行了说明。
gj3fmq9x8#
为了使用本地存储库,我们要使用的目标.jar文件必须在s2文件夹中。
1.文件可以手动获取并放置在相关位置(不首选)。通过控制台安装它也可以完成相同的过程。
1.相关的远程URL被写入.pom文件依赖项中,并在使用的IDE中刷新(验证)Intellij时自动将其放置在s2文件夹中。
1.通过中央存储库解决.pom文件依赖关系可以完成相同的过程。
**注意:**不应忘记ComponentScan,因为它与SpringBot上的jar工作相关。