Java Maven:使用导入的jar中的类
我对Maven很陌生。Java Maven:使用导入的jar中的类,java,maven,Java,Maven,我对Maven很陌生。 我正在尝试做以下工作: 假设我们必须修改项目A和B。项目B需要使用从A导入的jar中的某个类 以下是定义: 项目A的POM.xml: 4.0.0 A_组 神器 1 罐子 A_项目 http://maven.apache.org UTF-8 以下是项目B的POM.xml(取决于A): 4.0.0 B_群 B_伪影 1 罐子 B_项目 http://maven.apache.org UTF-8 A_组 神器 1 编译 以下是项目B的代码片段: import packa
我正在尝试做以下工作:
假设我们必须修改项目A和B。项目B需要使用从A导入的jar中的某个类 以下是定义: 项目A的POM.xml:
4.0.0
A_组
神器
1
罐子
A_项目
http://maven.apache.org
UTF-8
以下是项目B的POM.xml(取决于A):
4.0.0
B_群
B_伪影
1
罐子
B_项目
http://maven.apache.org
UTF-8
A_组
神器
1
编译
以下是项目B的代码片段:
import packageFromA.*;
公共类应用程序{
公共静态void main(字符串[]args){
classFromA ca=新classFromA;//来自packageFromA
ca.someFunction();
}
}
我为A运行mvn安装,然后为B运行,没有错误
但在尝试运行IntelliJ Idea的上述代码时,出现错误:
错误:(3,18)java:包packageFromA不存在
正如我从maven文档中了解到的:“编译依赖项在所有类路径中都是可用的,并且它们是打包的”。但似乎导入类仍然没有解决。定义中缺少什么?提前谢谢
更新:从IntelliJ运行时,问题在重新导入后得到解决。但是当我从命令行运行时java项目b
我是否需要显式设置导入JAR的类路径?如果是,我是否需要指向我在本地maven存储库(.m2/存储库)中的位置?感谢您在项目B的POM中添加maven jar插件的配置,以生成包含类路径的清单文件:
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
...
...
org.apache.maven.plugins
希望有帮助 pom.xml
s看起来不错,这很可能是IDE的问题。您检查过生成的jar
s了吗?谢谢您的回复。为项目A生成的jar包含classFromA.class文件。mvn应该安装更新类路径吗?但是项目B是否包含项目Ajar
文件?如果是的话,那么这是一个IDE问题。不,B的jar不包含来自A的jar。所以据我所知,它正在导入问题,对吗?此处应检查哪些设置?更多信息-这两个项目都安装在同一个本地存储库中。谢谢mvn包afterinstall
。