我有一个我想安装的测试罐.我不确定是否有不同的方法来安装test-jar,例如定义一个告诉maven它是一个测试jar的属性.
此外,groupId和artifactId与进行测试的另一个jar相同.
到目前为止,这是我的安装命令的样子:
mvn install:install-file -DgroupId=com.example -DartifactId=example -Dpackaging=jar -Dversion=1.2.3 -Dfile=example-test.jar -DgeneratePom=true
Run Code Online (Sandbox Code Playgroud)
那么我将如何安装一个测试罐呢?我知道必须要告诉maven它是一个测试jar,因为groupId和artifactId与另一个jar(这将是example-test.jar测试的jar)相同.
当我使用命令:mvn test时,maven使用主要资源而不是src/test/resources中的测试资源.
我如何让maven使用测试资源而不是主要资源?
编辑:我使用Classloader来查找我的资源.类加载器可以从我的src/test/resources目录中找到资源,但它首先在src/main/java中查找资源.
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream file =loader.getResourceAsStream("resource.xml");
Run Code Online (Sandbox Code Playgroud)
或者在运行maven命令时是否可以使用任何属性来优先处理类路径?
编辑2:我已经发现问题,它确实从测试/资源加载测试,但是我的测试涉及部署webapp(集成测试),当webapp访问资源时,它使用src/main/resources.有没有办法改变类路径的顺序,或者为一个部署在jetty容器中的WAR使一个在另一个之前?
我在名为Example的类中有以下变量:
private static int number;
Run Code Online (Sandbox Code Playgroud)
如果我想使用外部类为变量赋值,我会这样做吗?
1)使示例静态的setter方法,所以我可以像这样访问它:
Example.setNumber(3);
Run Code Online (Sandbox Code Playgroud)
2)或使setter方法非静态,所以我创建一个Example对象来设置数字
Example e = new Example()
e.setNumber(3);
Run Code Online (Sandbox Code Playgroud)
两者之间有什么区别,哪一种更好?
我正在使用hibernate,每当我尝试添加记录时,它都会丢弃表并再次添加它.它从不使用现有表并对其进行更改.
这是我的相关部分hibernate.cfg.xml
:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="hibernate.connection.url">jdbc:derby://localhost:1527/sample</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name = "current_session_context_class">thread</property>
<!-- Mapping the entities -->
<mapping class="inputDetails.Table1"/>
<mapping class="inputDetails.Table2"/>
<!--mapping resource="contact.hbm.xml"/-->
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
这是我保存数据的方式:
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
//...
session.save(newrecord)
session.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud) 当我运行时mvn clean install
,对于integration-test
阶段它不使用故障安全插件.
但是,如果我明确地调用插件来运行集成测试,它就可以工作(mvn failsafe:integration-test
).
如何mvn clean install
在integration-test
阶段运行时让maven使用故障安全插件?