如何在项目的库源中直接添加本地jar文件(尚未成为Maven存储库的一部分)?
在我的J2EE项目中,我有几个依赖项,这些依赖项在任何Maven存储库中都不可用,因为它们是专有库.这些库需要在运行时可用,因此必须复制到目标/.../ WEB-INF/lib ...
现在,我将它们列为我的POM中的系统依赖项,但是使用此方法的问题是,在编译期间没有将其复制到目标构建.这种方法也不是很优雅.
那么将它们集成到Maven中的最佳方法是什么?
注意:我不想创建自己的Maven存储库.
我尝试使用Maven 2手动安装工件时遇到了一些错误.我想用命令从本地目录安装jar
mvn install:install-file -Dfile=jta-1.0.1B.jar
Run Code Online (Sandbox Code Playgroud)
但是Maven给出了一个构建错误,其内容如下:
Invalid task '.01B.jar': you must
specify a valid lifecycle phase, or a
goal in the format plugin:goal or
pluginGroupId:pluginArtifactId:pluginVersion:goal
Run Code Online (Sandbox Code Playgroud)
我的命令有错吗?
Maven很棒.它主要通过在pom配置中指定依赖包的版本来使我脱离jar依赖地狱,并自动应用它们.它还通过m2e与Eclipse进行了很好的集成,因此可以在IDE中无缝地工作.
这对于Maven全局已知的依赖项来说非常有用.但是,有时候,有些库需要包含在Maven存储库中不可用的项目中.在这种情况下,我通常将它们添加到lib/项目中的目录中.只要它们在类路径中就可以编译.
但是,问题是导入项目时会自动包含它们.我一直在容忍这个问题,包括半生不熟的修复和黑客攻击太久了.每当有人安装这个项目时,我都要告诉他们手动将jar添加lib/到他们的Eclipse构建路径中,以便所有错误都消失.类似于以下内容:

我正在寻找一种方法来自动化这个过程,它既适用于mvn命令行程序又适用于Eclipse:更多的是强调Eclipse,因为在导入它们时只需要编译的项目很好.
我不想为此设置一个repo服务器,也没有任何内部专有组件可以保证在本地设置任何东西.我只有一些jar文件,开发人员不使用Maven; 我想和他们一起编译......我应该能够将它们包含在我的软件发行中,对吗?
我真的在寻找一种合理的方法来实现它,它也可以在Eclipse中运行而不用大惊小怪.这是我发现有希望的一个解决方案,但肯定似乎没有这个问题的权威解决方案.唯一接近的另一件事是maven-addjars-plugin,它可以正常工作但只能在命令行上运行.这个插件也不错,配置非常合理:
<plugin>
<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<goals>
<goal>add-jars</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/lib/java-aws-mturk</directory>
</resource>
<resource>
<directory>${project.basedir}/lib/not-in-maven</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,尝试让它在Eclipse中运行会涉及到以下关于生命周期映射的混乱pom.xml,我从未开始工作; 我甚至认为它没有配置为实际向Eclipse构建路径添加任何内容.
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.googlecode.addjars-maven-plugin …Run Code Online (Sandbox Code Playgroud) 我有依赖
<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来做到这一点?