相关疑难解决方法(0)

如何将本地jar文件添加到Maven项目?

如何在项目的库源中直接添加本地jar文件(尚未成为Maven存储库的一部分)?

java libraries maven mvn-repo

1053
推荐指数
19
解决办法
81万
查看次数

使用Maven在jar中包含依赖项

有没有办法强制maven(2.0.9)在一个jar文件中包含所有依赖项?

我将一个项目构建到一个jar文件中.我希望将依赖项中的类复制到jar中.

更新:我知道我不能在jar文件中包含一个jar文件.我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中.

java maven-2 packaging jar

329
推荐指数
9
解决办法
40万
查看次数

Maven:通过相对路径为jar添加依赖项

我有一个专有的jar,我想作为依赖添加到我的pom.

但我不想将它添加到存储库.原因是我希望我的常用maven命令等mvn compile开箱即用.(没有要求开发人员将其自己添加到某个存储库中).

我希望jar在源代码控制中位于第3方库中,并通过pom.xml文件的相对路径链接到它.

可以这样做吗?怎么样?

java dependencies build-process maven-2 build

221
推荐指数
7
解决办法
27万
查看次数

Maven:如何将reps中没有的jar包含到J2EE项目中?

在我的J2EE项目中,我有几个依赖项,这些依赖项在任何Maven存储库中都不可用,因为它们是专有库.这些库需要在运行时可用,因此必须复制到目标/.../ WEB-INF/lib ...

现在,我将它们列为我的POM中的系统依赖项,但是使用此方法的问题是,在编译期间没有将其复制到目标构建.这种方法也不是很优雅.

那么将它们集成到Maven中的最佳方法是什么?

注意:我不想创建自己的Maven存储库.

java build-process maven-2

96
推荐指数
4
解决办法
14万
查看次数

Maven:包括在公共存储库中找不到的jar

如果我要使用不在maven公共存储库中的第三方库,那么将它作为项目的依赖项包含在内的最佳方法是什么,以便当其他人签出我的代码时它仍然可以构建?

我的应用程序"A"依赖于公共存储库中不存在的jar"B".但是,我希望添加"B"作为对"A"的依赖,这样当世界另一端的人可以查看代码并仍然能够构建"A"时

dependencies maven-2 pom.xml

61
推荐指数
3
解决办法
4万
查看次数

将第三方jar包含在Maven阴影jar中,而不将其添加到本地存储库

我已经在Stack Overflow上找到了如何在项目中包含第三方JAR而不将其安装到"本地存储库"的答案:

我可以在没有安装的情况下将jar添加到maven 2 build classpath吗?

但是,当我使用Maven Shade插件创建包含项目所有依赖项的JAR时,第三方JAR不会自动包含在内.

如何让Maven Shade插件将这样的第三方JAR添加到着色的JAR中?


根据得到的答案,我做到了.我做的是,将这个片段添加到我的pom.xml的开头:

<repositories>
  <repository>
    <id>repo</id>
    <url>file://${basedir}/repo</url>
  </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

然后为我的项目添加了一个依赖项,也添加到pom.xml:

<dependencies>
  <dependency>
    <groupId>dummy</groupId>
    <artifactId>dummy</artifactId>
    <version>0.0.0</version>
    <scope>compile</scope>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

然后运行命令行将包添加到'repo':

mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file
    -Dfile=<my-jar>.jar -DgroupId=dummy -DartifactId=dummy
    -Dversion=0.0.0 -Dpackaging=jar -DlocalRepositoryPath=`pwd`/repo/
Run Code Online (Sandbox Code Playgroud)

(不确定repo路径是否需要完整路径,但不想冒险.)

repo子目录的内容现在是:

repo/dummy/dummy/0.0.0/dummy-0.0.0.jar
repo/dummy/dummy/0.0.0/dummy-0.0.0.pom
repo/dummy/dummy/maven-metadata-local.xml
Run Code Online (Sandbox Code Playgroud)

现在我可以将其检入版本控制,并且没有本地或远程依赖项.

java maven-2

31
推荐指数
2
解决办法
3万
查看次数

如何在使用maven构建的war中包含系统依赖项

我已经在互联网上搜索了很长时间,我无法弄清楚如何配置maven-war插件或类似的东西,以便系统依赖项包含在内置战争(WEB-INF/lib文件夹)中

我在jar-build的情况下使用maven依赖插件:

<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是我无法理解在战争构建的情况下要做什么.我尝试过使用maven-war插件,但它不包括构建中的系统依赖项.

[UPDATE]

我有类型的依赖:

<dependency>
    <groupId>LoginRadius</groupId>
    <artifactId>LoginRadius</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}\lib\LoginRadius-1.0.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在我的POM中,当构建war时,这些依赖项不包含在WEB-INF/lib中.

java eclipse maven

31
推荐指数
3
解决办法
5万
查看次数

Maven和eclipse:将非Maven或外部jar添加到项目中的可靠方法?

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)

java eclipse m2eclipse maven m2e

30
推荐指数
2
解决办法
4万
查看次数

如何在Maven项目中包含本地jar文件

我不想在Maven存储库(本地/远程)中安装几个jar.特别是我有几个jar文件

c:\work\projects\myapp\src\main\webapp\WEB-INF\lib\test.jar

c:\work\projects\myapp\src\main\webapp\WEB-INF\lib\test2.jar
Run Code Online (Sandbox Code Playgroud)

使用NetBeans打开/编辑时如何将它们包含到我的项目中?

java maven-2 netbeans jar

25
推荐指数
4
解决办法
6万
查看次数

Maven:将文件夹或jar文件添加到当前类路径中

我正在使用maven-compile插件来编译类.现在我想在当前的类路径中添加一个jar文件.该文件保留在另一个位置(假设c:/jars/abc.jar.我更喜欢将此文件保留在此处).我怎样才能做到这一点?

如果我在参数中使用classpath:

<configuration>
 <compilerArguments>
  <classpath>c:/jars/abc.jar</classpath>
 </compilerArguments>
</configuration>
Run Code Online (Sandbox Code Playgroud)

它将无法工作,因为它将覆盖当前的类路径(包括所有依赖项)

请帮我.

maven-2 jar classpath

18
推荐指数
1
解决办法
12万
查看次数