Tag: maven

如何在Intellij IDEA中构建和运行Storm拓扑

我按照Storm Starter说明并在IntelliJ中导入了Twitter Storm。 为了测试我编辑了ExclaimationToplogy并使用了Maven命令来构建和运行它: mvn -f m2-pom.xml compile exec:java -Dstorm.topology=storm.starter.ExclamationTopology 但我更感兴趣的是在IDE中而不是从命令行构建和运行。 我需要采取什么行动? 谢谢

在类似的Web应用程序之间共享Web层代码(控制器和JSP)的最佳实践

我正在努力重写一些老化的Web应用程序。 有两个特别是非常非常相似,但今天没有共享任何代码,我的目标是解决这个问题。 这些项目正在用Maven,Spring MVC和Sitemesh重写。 模型层代码很容易使用JAR进行共享。 但我不知道在类似的应用程序之间共享通用Web层代码(JSP和控制器)的任何好方法。 这是一些背景知识。 这些应用程序是网络商店。 一个是普通商店(想想amazon.com),用户可以登录,搜索产品,添加到购物车和结账。 另一个基本上是相同的东西,只有它是一个打击的网站。 产品浏览和购物车部分是相同的。 然而,登录和结帐完全不同。 我过于简单了,但它足以说明问题。 产品浏览和购物车部分中的很大一部分Web层代码应该能够在两者之间共享。 我认为根据环境变量或来自不同数据库的设置,只能将相同的WAR文件作为“模式”运行。 其中一个区别是完全不同的Spring Security配置。 最好将其他站点的登录和结帐控制器从组件扫描中移除,这样任何人都不能通过URL操作以某种方式跨越错误的控制器。 我最初开始使用Maven Profiles并过滤以在同一个WAR项目中保留两个不同的配置集(web.xml,spring configs等)。 根据选择的Maven配置文件,生成的WAR使用不同的配置集(为清晰起见,使用不同的名称)构建。 这违反了Maven原则,即一个pom产生一个工件。 有一个更好的方法吗? Maven WAR Overlays怎么样? 我看到人们谈论使用叠加来共享CSS,JS,图像甚至一些常见的JSP等公共资源。 但我没有看到有人提到像控制器这样的方式共享类。 我可以将Controller类推送到JAR,但从逻辑上看,它们似乎应该保留各自的JSP。 并且JSP也不能被推送到JAR(对吧?)。 我还想过让它成为一个包含多个WAR文件的EAR – 一个用于常见购物体验的WAR,另一个用于相应登录和结帐的WAR。 我相信会话可以在同一个EAR中的两个WAR之间共享,但我不确定它是否与Spring的会话范围bean相配。 我听说他们并没有真正存储在会话中。 我还必须弄清楚如何处理用于页眉/页脚的Sitemesh装饰器。 需要将相同的Sitemesh配置及其资源复制到两个WAR中,对吗? 所以最后,购物WAR工件在每种情况下仍然会有所不同。 我不得不相信其他人之前已经处理过这个问题。 我想错了吗? 这种事情有共同的解决方案吗?

Maven错误:模块的Maven项目配置不可用

当我尝试编译代码时,我不断收到此错误。 我的目录中有pom.xml文件,但我不确定那里是否有错误。 我发现互联网上只有一个关于此的链接,这不是我的情况: 模块需要Maven项目配置 错误:Maven资源编译器:模块“更新程序”所需的Maven项目配置不可用。 仅当从IDE启动外部构建时,才支持编译Maven项目。 这是我的pom文件的内容: 4.0.0 com.nothing.updater Updater 1.0-SNAPSHOT <!—-> <!—-> <!–com.nothing.toolbox–> <!–Toolbox–> <!–1.1–> <!—-> <!—-> 我将衷心感谢您的帮助。 谢谢!

以编程方式解析插件之外的Maven依赖关系 – 获取RepositorySystemSession和RepositorySystem

也许这将是一个比我原先想象的更大的任务,但无论如何,我正在尝试从文件加载MavenProject然后解决它的依赖关系。 我有两个位的代码,但我缺少一些我需要的对象引用; 特别是我需要获取RepositorySystemSession和RepositorySystem实例。 有小费吗? 注意:我用maven-plugin标记了这个问题,但这不是Maven插件。 我很高兴要求Maven 3(不管怎么说我已经有了……) 这是我到目前为止的代码: 构建MavenProject : public static MavenProject loadProject(File pomFile) throws Exception { MavenProject ret = null; MavenXpp3Reader mavenReader = new MavenXpp3Reader(); if (pomFile != null && pomFile.exists()) { FileReader reader = null; try { reader = new FileReader(pomFile); Model model = mavenReader.read(reader); model.setPomFile(pomFile); ret = new MavenProject(model); } finally […]

Maven依赖冲突:org.w3c.dom.ElementTraversal

我有一个Java代码库,它使用Maven进行依赖项解析和对CI运行测试。 经过最近一批开发(大到很难确定突破性变化)后,我的一些测试现在在使用带有org.w3c.dom.ElementTraversal的NoClassDefFoundError Maven运行时失败。 从我的IDE(IntelliJ IDEA)中运行时,相同的测试通过,因此可以以满足所有依赖关系的方式排列类路径。 我相信org.w3c.dom.ElementTraversal 存在于xml-apis jar 1.4.01中 (这是我依赖的 – 请参阅下面的依赖树 – 当我运行mvn dependency:build-classpath时我mvn dependency:build-classpath ),所以我不明白为什么它显然不存在。 我已经尝试将xml-apis 1.4.01显式添加到我的dependencyManagement部分(在父pom中,在子pom中具有依赖关系,并且除了xml-apis之外的所有其他传递依赖)但我仍然有相同的问题,所以我开始认为我正在努力解决错误的问题。 任何人都可以建议什么是错的,或者我如何进一步调试? exception堆栈跟踪 你可以看到我在Travis上遇到的完整错误 ,但代码片段是: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/security-app-context.xml]; nested exception is java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at […]

Kafka快速入门:我需要什么依赖?

我正在通过kafka快速入门: http://kafka.apache.org/07/quickstart.html 和基本的消费者群体示例: https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example 我已经编写了Consumer和ConsumerThreadPool,如上所示: import kafka.consumer.KafkaStream; import kafka.consumer.ConsumerIterator; public class Consumer implements Runnable { private KafkaStream m_stream; private Integer m_threadNumber; public Consumer(KafkaStream a_stream, Integer a_threadNumber) { m_threadNumber = a_threadNumber; m_stream = a_stream; } public void run() { ConsumerIterator it = m_stream.iterator(); while (it.hasNext()) { System.out.println(“Thread ” + m_threadNumber + “: ” + new String(it.next().message())); […]

Maven WebApp META-INF context.xml

我正在使用Maven 3,我正在尝试在webapp文件夹下添加META-INF文件夹。 所以我想尝试做以下事情: src main webapp META-INF context.xml WEB-INF 以下是我的POM文件: 4.0.0 com.data Java-WebApp 0.0.1-SNAPSHOT war Java-Web Application 3.0.6.RELEASE junit junit 3.8.1 test data com.data Java-Parent 0.0.1-SNAPSHOT 在src / main / resources下我添加了一个META-INF \ context.xml。 使用mvn包打包WAR文件时,结构如下所示: data webapp META-INF WEB-INF index.jsp 可以看到WEB-INF下的相关文件。 但是,META-INF文件夹是空白的。 我的默认Maven将在WEB-INF / classes下添加资源。 我想特别希望: data webapp META-INF context.xml WEB-INF 这怎么可能? 我尝试了其他的东西,但它仍然没有用。 context.xml包含以下内容: 我尝试从src \ […]

Maven – 检测相同依赖关系的多个版本

我刚刚遇到了一个我的maven项目的两个直接依赖项的情况,它有两个不同版本的特定传递依赖项。 在我的特定情况下,我直接依赖于以下内容: org.jclouds.driver jclouds-sshj ${jclouds.version} 和 org.mule.modules mule-module-jersey ${mule.version} 这两个依赖关系都对com.sun.jersey:jersey-core有一个(深层)传递依赖,但每个依赖关系都有不同的版本。 Maven没有对此失败,甚至发出警告(或者如果确实如此,我从未见过它!)这样的事情正在发生……因此我在调试发动机版本时发生的问题之前从未注意到它 – 由jclouds依赖带来的核心导致一些事情破裂。 是否存在maven插件或其他一些工具,它会检测到这种深度传递依赖性覆盖并至少警告用户(或者maven执行失败)如果它检测到这样的冲突…即使默认的maven行为是只选择解析依赖项时出现的第一个版本?

如何配置Maven2发布到Artifactory?

目前我有一个Maven2项目,在你运行时构建一个JAR: mvn clean package 我现在需要调整pom.xml以将此JAR( myapp.jar )发布到运行于以下位置的Artifactory服务器: http://myartifactory/artifactory/simple/myorg/myapp/0.1 我尝试将元素添加到我的pom.xml但是没有使用此配置发布任何内容: myartifactory http://myartifactory/artifactory/simple/ 关于如何让出版工作的任何想法? 为简单起见,假装此Artifactory存储库经过身份validation,以接受用户使用username=foo和password=bar发布/写入。

处理序列化框架的不兼容版本更改

问题描述 我们有一个Hadoop集群,我们在其上存储使用Kryo (序列化框架)序列化为字节的数据。 我们用来做这个的Kryo版本已从正式版本2.21中分离出来,将我们自己的补丁应用于我们使用Kryo遇到的问题。 当前的Kryo 2.22版本也修复了这些问题,但使用了不同的解决方案。 因此,我们不能只更改我们使用的Kryo版本,因为这意味着我们将无法再读取已存储在Hadoop集群中的数据。 为了解决这个问题,我们想要运行一个Hadoop作业 读取存储的数据 反序列化使用旧版Kryo存储的数据 使用新版本的Kryo序列化已还原的对象 将新的序列化表示写回我们的数据存储 问题是在一个Java程序中使用同一个类的两个不同版本并不简单(更准确地说,在Hadoop作业的映射器类中)。 问题简而言之 如何在一个Hadoop作业中使用同一序列化框架的两个不同版本反序列化和序列化对象? 相关事实概述 我们将数据存储在Hadoop CDH4集群上,使用Kryo版本2.21.2-ourpatchbranch进行序列化 我们希望将数据与Kryo 2.22版本序列化,这与我们的版本不兼容 我们使用Apache Maven构建我们的Hadoop作业JAR 可能的(也是不可能的)方法 (1)重命名包 我们想到的第一种方法是使用Maven Shade插件的重定位function重命名我们自己的Kryo分支中的包,并使用不同的工件ID释放它,这样我们就可以依赖转换作业项目中的两个工件。 然后,我们将实例化旧版本和新版本的一个Kryo对象,并使用旧版本进行反序列化,并使用新版本再次序列化对象。 问题 我们不在Hadoop作业中明确使用Kryo,而是通过我们自己的库的多个层访问它。 对于这些库中的每一个,都有必要 重命名涉及包和 使用不同的组或工件ID创建发布 为了使事情更加混乱,我们还使用其他第三方库提供的Kryo序列化程序,我们必须做同样的事情。 (2)使用多个类加载器 我们提出的第二种方法是在包含转换作业的Maven项目中完全不依赖于Kryo,而是从每个版本的JAR加载所需的类,该版本存储在Hadoop的分布式缓存中。 然后序列化对象看起来像这样: public byte[] serialize(Object foo, JarClassLoader cl) { final Class kryoClass = cl.loadClass(“com.esotericsoftware.kryo.Kryo”); Object k = kryoClass.getConstructor().newInstance(); ByteArrayOutputStream baos = […]