我有依赖
<dependency>
<groupId>de.matthiasmann</groupId>
<artifactId>twl</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/TWL.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后我执行mvn assembly:assembly
.添加了所有本机文件和远程maven库,但没有这个jar.
UPDATE
当我试图运行app时java -jar myjar.jar
.它返回一个错误,表明上述依赖项中没有类(NoClassDefFoundError:de.matthiasmann.twl.ForExample).我想将这个jar中的类添加到myjar.jar(与maven对远程依赖项的作用相同).我如何配置maven来做到这一点?
除非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文件系统路径时必须是反斜杠.
<repositories>
<repository>
<id>my-repo1</id>
<name>my custom repo</name>
<url>http://ho.ho.ho</url>
</repository>
<repository>
<id>project-repo</id>
<name>my project repo</name>
<url>file://${project.basedir}\project-repo</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41293 次 |
最近记录: |