Tag: 依赖

Maven中相同依赖的不同版本

我有一个依赖于Woodstox和XStream的maven项目。 不幸的是,XStream还依赖于Woodstox,但版本略高于我的需要。 与此同时,Woodstox库的工件名称发生了变化,因此maven不会将它们视为同一工件的多个版本。 但是包和类名是相同的,这意味着在运行时存在冲突。 现在,我可以在某种程度上破坏构造中的旧woodstox jar(在我们的案例中是一个war文件)但是解决这类问题的正确方法是什么?

在集成Maven,Tycho和Eclipse时处理非OSGi依赖项

我有一堆基于Eclipse的插件,我一直在迁移到Maven / Tycho。 大多数这些插件依赖于我现在通过Maven管理的单独库,而不是混淆.jar文件。 我当前设置中最麻烦的部分是由于Tycho显然无法处理仅Maven(即非OSGi)工件。 我目前的设置如下: 在每个Eclipse插件的pom.xml ,我在initialize阶段向maven-dependency-plugin发出unpack目标。 这会将我指定的工件解包到一个单独的target/dependencies录中。 target/dependencies目录被添加为build.properties的输出目录,以便Tycho可以在编译时将其添加到类路径中: source.. = src/main/java/ output.. = target/classes/ output.. = target/dependencies/ target/dependencies目录被添加到META-INF/MANIFEST.MF的Bundle-ClassPath库中。 这些设置允许compile Maven指令来编译插件。 从VCS导入项目并在Eclipse中手动指定target/dependencies项目录作为类文件夹允许所述IDE也编译插件。 不幸的是,由于以下几个原因,这是一个相当麻烦的解决方案: 配置maven-dependency-plugin需要列出应该解压缩的所有工件。 可以使用unpack-dependencies而不是unpack ,但这也会解压所有OSGi依赖项 – 在每个项目目录中解压缩一半的Eclipse并不是我的乐趣…… 在Eclipse中添加类文件夹需要将Maven initialize运行一次,以便创建target/dependencies录。 纯Maven项目与Eclipse中依赖的Tycho项目之间没有源连接。 对于从Maven项目传播到Tycho项目的更改,以便例如Eclipse可能显示潜在的编译问题,必须mvn install Maven项目然后在Tycho项目中运行mvn clean initialize以删除先前解压缩的依赖项和拉入当前设定。 然后你必须刷新Eclipse项目并希望Eclipse做正确的事情。 同样,从Tycho项目查看依赖关系源将不会显示主要源文件,而是显示target/dependencies可用的任何内容 – 很可能只是一个.class文件。 我认为必须有一个更合理的方法来解决这个问题 – 这将允许Eclipse和Maven项目更紧密地集成。 那么,我错过了什么? 这个用例的推荐设置是什么? 还有更好的选择吗? 最好是不需要设置一堆Nexus和/或p2存储库的东西?

如何可视化jar(而不是插件)依赖项?

我目前正在重构一个大型Java应用程序。 我将其中一个中心(Eclipse)项目拆分为大约30个单独的“组件”,但它们仍然是相互依赖的。 为了更好地了解什么取决于我正在寻找什么方式来绘制编译时依赖性。 到目前为止我找到的所有工具都能够绘制包或类依赖关系或Eclipse插件之间的依赖关系,但是我想到的只是看看每个Eclipse项目的类路径设置,并从中构建一个粗粒度图。 之后我会更深入,但是现在这只是意味着我无法看到所有树木的森林。

以编程方式使用IVY依赖项管理器

我需要帮助使用IVY作为依赖项管理器 我的应用程序需要在RUN-TIME加载插件 表示在核心应用程序运行时,用户可以请求新的插件 并安装它们, 我希望使用核心应用程序DB管理所有已安装的插件。 我想从我的插件服务器(或其他一些描述符)获得一个pom, 并要求IVY告诉我什么是依赖项或让IVY根据我的应用程序的当前状态安装插件和依赖项。 (我现在有什么, 1.jar被核心应用程序使用 2.jar用于当前安装的插件) 我希望每个插件都有独立的目录 在我的应用程序所在的某个文件夹下(不是共享文件夹) 事情是我不知道从哪里开始 我注意到没有编程API 我找到了尝试类似东西的网络上的一个链接 但看起来像代码没有完成,或一些变量丢失,我不知道如何完成其​​余的原因湖编程文档 http://www.mail-archive.com/ivy-user@ant.apache.org/msg03228.html (其中变量“art”来自…..) 能帮帮我吗…谢谢大家 UPDATE 好吧,我现在正在尝试。 我得到一些错误加上我不知道如何定义我的archiva服务器 IvySettings settings = new IvySettings(); settings.setDefaultIvyUserDir(new File(“D:/programming/eclipse_projects/ivyTest/repo/”)); settings.setDefaultCache(new File(“D:/programming/eclipse_projects/ivyTest/repo/cache/”)); settings.setDefaultCacheArtifactPattern(“[module]/[revision]/[module]-[revision](-[classifier]”); Ivy ivy = Ivy.newInstance(settings); ivy.getLoggerEngine().pushLogger(new DefaultMessageLogger(Message.MSG_VERBOSE)); ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(), new File(“src/movies.pom”).toURL(), true); RetrieveOptions retriveOptions = new RetrieveOptions(); retriveOptions.setUseOrigin(true); retriveOptions.setConfs(md.getConfigurationsNames()); ivy.retrieve(md.getModuleRevisionId(), “lib/[conf]/[artifact].[ext]”, […]

Java Classloader – 如何引用jar的不同版本

这是一个常见问题。 我正在使用2个库A.jar和B.jar ,这些库依赖于同一个jar的不同版本。 假设在运行时我需要THIS.xxxjar MY.jar -> A.jar -> THIS.1.0.0.jar -> B.jar -> C.jar -> THIS.5.0.0.jar 我可以针对它的依赖编译特定的jar(A.jar / B.jar)但是在运行时我只能加载1个版本。 哪一个? 仅加载1个依赖项(最新版本)意味着如果库不是向后兼容的,那么我的代码可能会抛出运行时exception(那里有向后兼容的库吗?)。 无论如何,我知道像OSGi这样的东西可以解决这个问题。 我想知道解决这类问题的旧方法是什么…… 非常感谢

如何使用javareflection在类中定义所有导入?

嗨,我是javareflection域的新手。所以任何人都可以在这个问题场景中指导我。 我有一个名为“SomClass.java”的类 ,它导入一个名为“SomPackage.RefClass” 的包和一些其他java库,如java.lang ..等。 现在我希望通过reflection了解一个类中定义的所有导入。 import SomPackage.RefClass; import java.lang.reflect.Field; import java.io.IOException; public class SomeClass{ RefClass refClass_Obj; String nationality; ///some other members } 我只想知道使用reflection在类中定义的所有导入的列表。 我看到一个问题听到的类似于我的问题,但是没有详细阐述,所以需要一些良好的帮助方向。 提前致谢。