如何将本地jar文件(还不是Maven存储库的一部分)直接添加到项目的库源中?
当前回答
命令行:
mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
其他回答
在Apache Maven 3.5.4中,我必须添加双引号。如果没有双重报价,这对我来说是行不通的。
例子:mvn安装:安装文件“-Dfile=jar文件的位置”“-DgroupId=组id”“-DastifactId=工件id”“-D版本=版本”“-Dpackage=包类型”
也许有人会感兴趣:https://github.com/Limraj/maven-artifact-generator
Console程序在本地存储库中生成maven工件,并根据jar的路径为pom.xml配置依赖项。您可以对一个文件执行此操作,但如果您有多个jar文件,则最有用。
路径jar:java-jar maven-artifact-generator-X.X.X.jar-p path_to_jars-g com.test-V 1.2.3-p jar
震击器:java-jar maven-artifact-generator-X.X.X.jar-f file_jar-g com.test-V 1.2.3-P jar
这将在本地maven存储库中生成一个工件,并在gen.log中为pom.xml生成依赖项。ArtifactId是jar文件的名称。
需要安装maven。在widnows 7和macOS X(unix/linux)上测试。
根项目上进行构建
您可以在命令行中编写以下代码,或者如果您使用eclipse内置maven,右键单击项目->运行方式->运行配置…->在左侧面板中,右键单击Maven Build->new configuration->在基本目录中的Goals&中编写代码:${project_loc:NameOfYourProject}->运行
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
其中每一个都指:
<path to file>:要加载的文件的路径,例如->c:\kapcha-2.3jar
<group id>:文件应在例如com.google.code下注册的组
<artifact-id>:文件的工件名称,例如->kappcha
<version>:文件的版本,例如->2.3
<package>:文件的打包,例如->jar
2.安装后,只需在pom.xml中声明jar。
<dependency>
<groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3</version>
</dependency>
真正快速而肮脏的方法是指向本地文件,请注意“system”现在已被弃用:
<dependency>
<groupId>com.sample</groupId>
<artifactId>samplifact</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>
然而,这只会存在于您的机器上(显然),因为共享通常使用适当的m2存档(nexus/artifactory)是有意义的,或者如果您没有这些存档或不想设置本地maven结构化存档并在pom中配置“存储库”:
本地:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://C:/DEV//mymvnrepo</url>
</repository>
</repositories>
远程:
<repositories>
<repository>
<id>my-remote-repo</id>
<url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
</repository>
</repositories>
对于此解决方案,还可以使用basedir变量创建相对路径:
<url>file:${basedir}</url>
另一个有趣的例子是,当您希望在项目中拥有私有maven jar时。您可能希望保留Maven的功能来解决可传递的依赖关系。解决方案相当简单。
在项目中创建文件夹库在pom.xml文件中添加以下行<properties(财产)><local.repository.folder>${pom.basedir}/libs/</local.reppository.folder></财产><存储库><存储库><id>本地maven存储库</id><url>文件://${local.resource.folder}</url><发布><enabled>真</enabled></releases><快照><enabled>真</enabled></snapshot></repository></存储库>打开.m2/repository文件夹,将要导入的项目的目录结构复制到libs文件夹中。
例如,假设您要导入依赖项
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject</artifactId>
<version>1.2.3</version>
</dependency>
只需转到.m2/repository,您将看到以下文件夹
com/mycompany/myproject/1.2.3
复制libs文件夹中的所有内容(同样,包括.m2/repository下的文件夹),就完成了。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap