我想我之前没有真正做过这么多,因为我遇到了一个奇怪的问题。我试图从现有的Java项目生成JAR,然后将其放入Spring Maven项目中。我确定我正确地包含它,我之前已经做了很多次我得到的第三方JAR(即使它是一个Maven项目,我已经在其中包含了一些不起眼的JAR并放在了构建路径上等),我的Eclipse中的JAR显示正常,好像它包含在内,我有一个测试类,它从JAR导入一个类,实例化它等,并且它没有显示任何错误(在IDE中导入很好等),但是当我去做Maven安装:
[ERROR] /media/src/main/java/org/jadefalcon/automation/DataSetup/test.java:[11,15] package org.test does not exist
[ERROR] /media/src/main/java/org/jadefalcon/automation/DataSetup/test.java:[21,2] cannot find symbol
我已经尝试过做Maven清理,但仍然是同样的问题,我正在测试的JAR类是这样的:(正在尝试更复杂的一个,但后来尝试了解决问题)
package org.test;
public class something {
public String main () {
return "it is definitely working fine";
}
}
这是我生成的JAR(源可见): https://docs.google.com/leaf?id=0BzB_xvrbRpbYODQyMjEzOWEtOTdjNS00YjM3LTlkZGUtNjY5NmIwN2RiNTRj&hl=en
我很感激任何建议,因为我对此感到困惑和沮丧。感谢
答案 0 :(得分:2)
你可以在你的maven项目中包含一个'常规'jar - 正如你所描述的那样 - 虽然这不是最佳实践,主要是因为你甚至没有失去Maven对于那个jar的功能,而且还有整点Maven依赖关系管理:您必须将该jar包含在您的源代码中才能构建它。
您当然也可以为该jar创建一个Maven工件,使用Maven构建它,使用Maven安装它并将其用作普通的Maven依赖项。
您还可以创建父.pom并将您的依赖项目作为其中的模块以及您的真实应用程序(或者您的真实应用程序也可以是您的父项)。请参阅here。
答案 1 :(得分:1)
由于这给我带来了相当多的悲伤,我想我应该发布我发现的解决方案。显然你不应该只在maven项目中包含一个常规的lib JAR(虽然我发誓我之前已经完成它并且它有效),我发现这种方式包含一个本地JAR,它不是这个帖子的存储库:
Can I add jars to maven 2 build classpath without installing them?
我做了这个并正确地进行了maven安装(其中版本和artifactID只是组成值)
<dependency>
<groupId>org.test</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/testjar.jar</systemPath>
</dependency>