Maven:向jar添加本地依赖项

我有依赖

 de.matthiasmann twl 1.0.0 system ${project.basedir}/lib/TWL.jar  

然后我执行mvn assembly:assembly 。 添加了所有本机文件和远程maven库,但没有这个jar。

UPDATE

当我尝试通过java -jar myjar.jar运行app时。 它返回一个错误,表明上述依赖项中没有类(NoClassDefFoundError:de.matthiasmann.twl.ForExample)。 我想将这个jar中的类添加到myjar.jar(与maven对远程依赖项的作用相同)。 我如何配置maven来做到这一点?

请参阅具有依赖关系的Maven 2程序集:范围“系统”下的jar不包含为什么不包含系统依赖关系以及如何解决它,特别是mvn install:install-file代码是您想要的。

除非Java EE服务器/容器配置了该jar,否则不能使用systemPath。

请记住,maven只是开发和编译时间。 构建war文件后,除了将所有所需的jar放入WEB-INF / lib文件夹之外,maven无效。

当您指定系统范围时,这意味着您有责任确保在部署战争时存在jar。 你已经有了一个框架来做这个,你不希望用你的jar来阻碍你的构建依赖,但是你必须只在开发过程中使它可用。

另一个类似的范围是“提供”。 例如,JBoss或您的企业通用部署Tomcat框架已经提供了许多像Spring和Hibernate这样的jar,它们由服务器启动加载并且对服务器中的所有应用程序是通用的。 因此,您不希望maven构建将其包含在war文件中。

正确的方式,Maven大师会告诉你。 是拥有自己的maven服务器,并在该服务器中构建所需的任何人工制品。 但是,偶尔这是不可能的。

因此,在这种情况下,我创建与项目一起分发并检入版本控制的项目级存储库。 我运行命令mvn install来创建一个名为“project-repo”的项目级目录。

http://maven.apache.org/plugins/maven-install-plugin/examples/specific-local-repo.html (由于熟悉,大多数时候,我手动构建repo而不是运行mvn install)。

然后在POM中,我将file:// $ {project.basedir} / project-repo指定为其中一个存储库。 需要注意的是,在Windows中,“file://”之后的斜杠以外的斜杠在引用Windows文件系统路径时必须是反斜杠。

    my-repo1 my custom repo http://ho.ho.ho   project-repo my project repo file://${project.basedir}\project-repo   

你可以通过多种方式实现这一点,请参考下面的博客

http://blog.valdaris.com/post/custom-jar/

如果您有这样的依赖关系,那么最好的解决方案是首先使用存储库管理器并简单地将该依赖项放入存储库管理器中,然后将其用作简单依赖项。