我有一个使用普通Maven结构的项目,例如 module \ src \ main – java – resources \ test – java – resources 在test/resources ,我想为我正在编写的解析器保留一组测试输入文件,然后通过测试套件运行目录中的所有文件。 正如现在所写,测试代码在命令行中运行,但在通过Eclipse JUnit插件运行时失败: File file = new File(“src/test/resources”); file.list(); (我实际上使用的是FilenameFilter ,但我正在尝试简化。) 在使用调试器进行unit testing后,问题结果是我构建的文件指向/path/to/workspace/myproj/src/test/resources ,而实际文件位于/path/to/workspace/myproj/modulename/src/test/resources (这是一个Maven多模块项目)。 显然,从命令行运行mvn test时这不是问题。 我想我的问题是双重的:一, 我做错了吗? 我看到很多人使用类加载器来发现资源,就像在这个问题中一样 ,但是我不想要特定类型的所有资源 ,只需要测试/资源下的一个目录。 第二,如果这不是一个可怕的想法, 我是否有配置错误 (例如它“应该”工作)? 这是Eclipse的错,Maven问题还是什么?
Maven构建成功,但是当我尝试运行它失败时: Error: Could not find or load main class app.jar 我有resources/META-INF/MANIFEST.MF Manifest-Version: 1.0 Main-Class: go.Application 一切似乎都到位了。 怎么了? 的pom.xml org.apache.maven.plugins maven-jar-plugin 2.5 src/main/resources/META-INF/MANIFEST.MF UPDATE1 使用IntelliJ构建jar工件时也是如此。 UPDATE2 好的,我设法运行它,但现在我有: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean. UPDATE3 通过添加到Application.java来实现它: @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); return factory; }
我们有很多组件,我们想要开始模块化只有少数组件。 想知道在所有这些组件中创建捆绑包的最佳方式(在我的构建环境中)是什么? 我的环境:Java 6,Maven 2.2.1,Hudson 技术:Spring 3.0.5,WebSphere 7,Hibernate 3.2.x和大多数apache commons。 要求 模块化只有少数组件。 其余组件可以导出所有包。 当导入到eclipse中时,我应该能够在构建路径中看到import-packages包作为依赖项(mvn eclipse:eclipse似乎不会这样做)
我测试了从PrimeFaces部署这个例子 。 我不知道为什么它不起作用。 我收到此错误消息: 警告:此页面调用以前缀p声明的xml命名空间http://primefaces.org/ui但该命名空间不存在taglibtrary 我按照本教程正确安装jar。 我下载了Primefaces jar文件,并将其添加到WAR文件的resources目录中。 org.primefaces primefaces 3.3 jar 我还将Primefaces.jar文件添加到Glassfish的/ modules目录中,并将模块的名称添加到default-web.xml文件中。 它不起作用。 我错过了什么? 编辑2我是正确的POM文件是问题: 4.0.0 com.DX_57 History-Module-57 1.0-SNAPSHOT war History-Module-57 ${project.build.directory}/endorsed UTF-8 javax javaee-web-api 6.0 provided org.primefaces primefaces 3.3 junit junit 4.8.2 test org.osgi org.osgi.core 4.2.0 provided org.osgi org.osgi.compendium 4.2.0 provided org.glassfish osgi-cdi-api 3.1-b41 jar provided org.apache.felix maven-bundle-plugin 2.1.0 true ejb war […]
如果模块的两个依赖关系都有一个共同的depdnendency但在poms中指定了不同的版本,那么在构建模块时使用哪个版本? 例如 Artifact-A / \ / \ / \ Artifact-B Artifact-C \ / 1.6.0 \ / 1.8.0 \ / Artifact-D 同样在下面详述的场景中,神器-A使用的Artifact-C版本是什么? Artifact-A | \ | | | | Artifact-B | 1.60.0 | | 1.62.0 | | | / Artifact-C 如果您可以提供或链接到maven如何解析这些版本的简明探索。
您可能认为以下问题非常简单,但我不知道我在这里做错了什么。 我觉得我添加了必需的依赖项。 不是吗? 有人可以建议我这里有什么不对吗? Exception in thread “main” java.lang.NoClassDefFoundError: com/sun/xml/bind/v2/model/annotation/AnnotationReader at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:242) at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234) at javax.xml.bind.ContextFinder.find(ContextFinder.java:441) at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641) […]
我知道为什么不将Eclipse / IDE特定的文件提交到像Git这样的VCS(我实际上正在使用它)。 这是我使用Maven并让它为您生成这些文件并且不受版本控制的原因之一。 但是我想知道,如果这些文件应该在.gitignore中被忽略,它本身受VCS / Git的控制: .classpath .project .settings/ target/ 这个可以吗? 什么是优点和缺点,因为.gitignore文件本身变成了特定于IDE的文件,因为忽略的文件是IDE特有的? 任何最佳做法?
我目前正在使用IBM Rational Application Development(IBM Eclipse发行版)进行Portlet开发,并且在Maven集成方面存在一个小问题。 这是情况: 1)IBM RAD能够直接从内部部署Portlet(RUN / DEBUG) 在这种情况下,我根本不使用Maven生成的WAR,因为IBM RAD似乎自动创建了WAR并将其推送到IBM WebSphere Portal。 到目前为止,这不是什么大问题。 2)Maven依赖项不会复制到WebContent / WEB-INF / lib目录 IBM有自己的目录结构:WebContent / WEB-INF和WebContent / META-INF。 如果我更新pom.xml以包含新的依赖项,那些JARS将不会被复制到WebContent / WEB-INF / lib目录,因此当我想要运行/调试portlet时,这些库将不会包含在内。 题: 有没有办法在我更新pom.xml后立即将新JAR自动复制到WebContent / WEB-INF / lib文件夹? (如果是这样,那应该是哪个生命周期?) 如果问题#1没有完美的解决方案,我不介意这个步骤是否包含在“mvn install”编译/目标中。 不希望使用ant-task,而是使用maven自己的复制实用程序(如果存在)。 如果有人建议如何集成Maven和IBM RAD以进行WebSphere Portlet开发,请随意添加更多答案。 谢谢
当我部署jar时,maven总是在其文件名中添加日期,这使得文件名存储库与我本地的文件不同。 如何删除文件名中的日期? 谢谢
我有一个网络应用程序,我在Tomcat上运行生产。 它使用MySQL连接器,但它没有与war捆绑在一起,而是包含在Tomcat的公共lib目录下,因此我可以通过JNDI访问数据源。 我想做一些与Jetty(开发时)类似的东西,更确切地说是Jetty + Maven。 有没有办法让我在通过Maven运行Jetty时在类路径中包含mysql-connector jar(即没有将它捆绑在war文件中)? 另外我应该注意到我在构建过程中使用Maven并将mysql-connector指定为“提供”范围。