除了src / main / java之外,我还要在构build过程中添加一个src / bootstrap目录,换句话说,我希望maven编译并在源代码中包含源代码。 怎么样!?
我有一个使用Hibernate(和Spring)从数据库中检索数据的Maven构build的项目。 我在我的项目中对DAO的“testing”扩展了Spring的AbstractTransactionalDataSourceSpringContextTests以便DataSource可以连接到我的类下,以便能够实际运行查询/ Hibernate逻辑,获取数据等。 在其他几个项目中,我使用这些types的testing与HSQL数据库(内存中或指向文件)配合使用,以便能够高效地testing实际的数据库查询逻辑而不依赖于外部数据库。 这样做效果很好,因为它避免了任何外部依赖和数据库在运行testing之前的状态(每个testing都被包装在一个回退的事务中)。 我很好奇最好的方式来组织这些testing,这实际上是一个松散的集成testing的味道,与Maven。 将这些testing保存在src/test/java感觉有点肮脏,但是从我读过的内容来看,似乎没有一个一致的策略或者用Maven组织集成testing的做法。 从我目前阅读的内容来看,似乎我可以使用Failsafe插件 (或Surefire的第二个实例)并将其绑定到integration-test阶段,并且还可以绑定自定义启动或closures逻辑(例如至于启动/停止HSQL实例)进行pre-integration-test或post-integration-test 。 但是,这真的是最好的方法吗? 所以我的问题基本上是 – 在Maven中组织这个最普遍的做法是什么? 我无法在文档中find任何一致的答案。 我想要的是: 从集成testing分开unit testing,所以在test阶段只运行unit testing 将自定义启动/closures逻辑绑定到pre-integration-test和post-integration-test 将集成testing的报告合并/提交给unit testingSurefire报告
有没有办法在Maven项目中设置第二个persistence.xml文件,以便用于testing,而不是用于部署的正常testing? 我试着把一个persistence.xml放到src / test / resources / META-INF中,它被复制到target / test-classes / META-INF,但似乎是target / classes / META-INF(从src / main / resources)得到首选,尽pipemvn -X test按照正确的顺序列出了类path条目: [DEBUG] Test Classpath : [DEBUG] /home/uqpbecke/dev/NetBeansProjects/UserManager/target/test-classes [DEBUG] /home/uqpbecke/dev/NetBeansProjects/UserManager/target/classes [DEBUG] /home/uqpbecke/.m2/repository/junit/junit/4.5/junit-4.5.jar … 我希望能够运行简单的hsqldbconfiguration的testing,而不必更改JPAconfiguration的部署版本,理想情况下直接在项目签出后不需要本地调整。
可以通过在<dependency>声明一个<exclusions>元素来排除依赖关系中的工件。但是在这种情况下,需要排除从父项目inheritance的工件。 正在讨论的POM的摘录如下: <project> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>jruby</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <artifactId>base</artifactId> <groupId>es.uniovi.innova</groupId> <version>1.0.0</version> </parent> <dependencies> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>ALL-DEPS</artifactId> <version>1.0</version> <scope>provided</scope> <type>pom</type> </dependency> </dependencies> </project> base工件,取决于javax.mail:mail-1.4.jar ,而ALL-DEPS依赖于同一个库的另一个版本。 由于执行环境中存在来自ALL-DEPS mail.jar ,虽然没有被导出,但是与父节点上存在的mail.jar发生冲突,其范围为compile 。 一个解决scheme可能是从父POM中删除mail.jar,但是大部分inheritancebase的项目都需要它(因为是log4j的一个transitive依赖项)。 所以我想要做的就是简单地将父库从子项目中排除 ,因为如果base是依赖关系而不是父项目 ,那么可以这样做: … <dependency> <artifactId>base</artifactId> <groupId>es.uniovi.innova</groupId> <version>1.0.0</version> <type>pom<type> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> </exclusions> </dependency> …
Maven有两个可用的Eclipse插件: Eclipse IAM (旧名称是Q4E) m2eclipse的 m2eclipse似乎是最古老的,但更强大。 两者之间有什么关键的区别? 从今天开始的项目应该select哪一个,为什么? 更新: m2eclipse正在转向eclipse.org,并将包含在Indigo发行版(Eclipse 3.7)中。 在Eclipse上看到m2e:这对你意味着什么? 和m2eclipse正在移动到eclipse.org! 。 接受的答案因此更加正确。
我试图build立一个多模块的Maven项目,而模块间的依赖关系显然没有正确设置。 我有: <modules> <module>commons</module> <module>storage</module> </modules> 在父POM中(它有一个包装types的POM),然后是子目录commons /和storage /它们定义JAR POM具有相同的名称。 存储取决于Commons。 在main(master)目录中,我运行mvn dependency:tree并查看: [INFO] Building system [INFO] task-segment: [dependency:tree] [INFO] ———————————————————————— [INFO] [dependency:tree {execution: default-cli}] [INFO] domain:system:pom:1.0-SNAPSHOT [INFO] \- junit:junit:jar:3.8.1:test [INFO] ———————————————————————— [INFO] Building commons [INFO] task-segment: [dependency:tree] [INFO] ———————————————————————— [INFO] [dependency:tree {execution: default-cli}] …correct tree… [INFO] ———————————————————————— [INFO] Building storage [INFO] task-segment: [dependency:tree] [INFO] […]
我试图用maven和eclipse创build一个非常简单的webapp,但是我根本就没有快乐,实际上是快乐的反面。 我去文件 – >新build项目,selectMaven项目,并selectmaven-archetype-webapp。 当我完成向导时,将会生成一个webapp结构,但是在main,just资源和webapp下没有“java”目录。 所以我右键点击main并select新的类。 该类是在资源(?!)下创build的,此外,java似乎没有编译它。 我可以做出愚蠢的错误,没有语法突出显示。 这就像java不认识它。 或者我已经尝试在主应用程序下创build一个新的“java”目录,但仍然存在相同的不存在的Java症状。 是什么赋予了? 这让我疯狂 谢谢大家!
我试图导入cloudera的org.apache.hadoop:hadoop客户端:2.0.0-cdh4.0.0 从cdh4 maven回购在eclipse 3.81,m2e插件与oracle的jdk 1.7.0_05在win7上的maven项目 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.0.0-cdh4.0.0</version> </dependency> 但是,我得到以下错误: The container 'Maven Dependencies' references non existing library 'C:\Users\MyUserId\.m2\repository\jdk\tools\jdk.tools\1.6\jdk.tools-1.6.jar' 更具体的说,maven说下面的工件丢失了 Missing artifact jdk.tools:jdk.tools:jar:1.6 如何解决这个问题?
我正在开发一个依赖于X的项目.X依次取决于Y. 我曾经明确地把Y包含在我的项目中。 然而,它并没有被用来使事情变得更清洁,而是把它作为依赖添加到X的POM中。 X被标记为释放依赖。 问题是,从我的项目的POM中删除Y并将其添加到X的POM后,我的项目不是在mvn -U clean package上拾取它。 我知道 – 我更新快照,但不是发布。 所以,在不删除〜/ .m2 / repository目录的情况下,如何强制重新下载X的pom? 另外,我试着运行dependency:purge-local-repository ,它也没有工作。
有没有一个简单的方法来指定一个替代端口的Tomcat在POM或命令行。 我想有几个项目在同一台机器上运行。