相关疑难解决方法(0)

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

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

java libraries maven mvn-repo

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

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

在实验/快速和肮脏的模拟开发阶段,Maven2让我发疯.

我有一个pom.xml文件定义了我想要使用的web-app框架的依赖项,我可以从该文件快速生成启动项目.但是,有时我想链接到尚未pom.xml定义文件的第三方库,所以不是pom.xml手动创建第三方库的文件并安装它,并将依赖项添加到我的pom.xml,我只是想告诉Maven:"除了我定义的依赖项,还要包含任何罐子/lib."

看起来这应该很简单,但如果是这样,我就会遗漏一些东西.

任何关于如何做到这一点的指针都非常感谢.除此之外,如果有一种简单的方法将maven指向一个/lib目录并轻松创建一个pom.xml所有封闭的jar映射到单个依赖项,然后我可以一次命名/安装和链接就足够了.

java maven-2

686
推荐指数
14
解决办法
38万
查看次数

将第三方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万
查看次数

将本地 jar 包含到 Maven 项目后出现 ClassNotFoundException

我有一个基于 maven 的 spring boot 项目。

我必须包含另一个团队提供的本地 jar。所以我遵循以下接受的答案:How to include local jar files in Maven project

所以我使用:

<dependency>
  <groupId>com.netease</groupId>
  <artifactId>thrift</artifactId>
  <version>1.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/prome-thrift-client-1.0.0.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这在 IDEA 中运行良好。但是当我尝试使用以下命令运行包 jar 时:

  mvn clean package
  java -jar target/prome-data.jar
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪就像:

....
....
Caused by: java.lang.ClassNotFoundException: com.netease.thrift.client.ThriftRpcClient
Run Code Online (Sandbox Code Playgroud)

有什么我想念的吗

java spring maven

4
推荐指数
1
解决办法
5479
查看次数

向Maven添加系统依赖项

我正在通过Maven与Apache Spark一起工作,并且尝试通过包含第3方jar并尝试利用其中的某些方法来修改源。

使用编译Spark项目时出现以下错误

mvn -Dhadoop.version=2.2.0 -Dscala-2.11 -DskipTests clean package
Run Code Online (Sandbox Code Playgroud)
not found: object edu
[ERROR] import edu.xxx.cs.aggr._
Run Code Online (Sandbox Code Playgroud)

我修改ResultTask.scala为包含导入语句。因此,maven无法找到我要使用的jar并将其与项目链接。

我已经将依赖项添加到pom.xml文件中,如下所示:

<dependency>
    <groupId>edu.xxx.cs</groupId>
    <artifactId>aggr</artifactId>
    <version>0.99</version>
    <scope>system</scope>
    <systemPath>${basedir}/aggr.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我尝试链接的jar文件与spark pom.xml文件位于同一目录中。我将此依赖项添加到pom.xml。我将其插入pom.xml文件中的2个现有依赖关系之间。我不确定出什么问题,但是我现在想立即关联该jar,以便可以使用其中的方法。我也不确定我是否应该使用特定于groupId,artifactId和版本的任何东西。edu.xxx.cs.aggr是包含其他源文件和软件包的根软件包。我将不胜感激任何帮助。

更新

我用了

mvn install:install-file -Dfile=<path-to-file> -DgroupId=edu.xxx.cs -DartifactId=aggr -Dversion=0.99 -Dpackaging=jar to install the jar to the .m2 repo. I checked the repo to see if it was installed, and it was.
Run Code Online (Sandbox Code Playgroud)

我将pom.xml中的依赖项更改为

<dependency>
        <groupId>edu.purdue.cs</groupId>
        <artifactId>aggr</artifactId>
        <version>0.99</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我仍然遇到相同的错误。

java maven apache-spark

2
推荐指数
1
解决办法
7229
查看次数

标签 统计

java ×5

maven ×3

maven-2 ×2

apache-spark ×1

libraries ×1

mvn-repo ×1

spring ×1