別のプロファイルでmavenを実行したいが、動作していないようだ。 は私JPAConfigurationのために2貴様のJavaクラスを作成しました:私のpom.xmlでEclipse Maven:スプリングプロファイルでテストを実行
JPAConfiguration.classとJPAConfigurationTest.class
@Configuration
@Profile({"dev"})
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = { "com.jle.athleges.model.repository", "com.jle.athleges.security.repository" })
@ComponentScan(basePackages = { "com.jle.athleges.model.services", "com.jle.athleges.security.services" })
public class JpaConfiguration {
@Bean
public DataSource dataSource() throws SQLException {
System.out.println("use dev");
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
builder.setName("dev");
return builder.setType(EmbeddedDatabaseType.H2).build();
}
@Bean
public EntityManagerFactory entityManagerFactory() throws SQLException {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.jle.athleges.model.entity", "com.jle.athleges.security.entity");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}
@Bean
public PlatformTransactionManager transactionManager() throws SQLException {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
@Bean
public HibernateExceptionTranslator hibernateExceptionTranslator() {
return new HibernateExceptionTranslator();
}
}
@Configuration
@Profile({"test"})
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = { "com.jle.athleges.model.repository", "com.jle.athleges.security.repository" })
@ComponentScan(basePackages = { "com.jle.athleges.model.services", "com.jle.athleges.security.services" })
public class JpaConfigurationTest {
@Bean
public DataSource dataSource() throws SQLException {
System.out.println("use test");
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
builder.setName("test");
return builder.setType(EmbeddedDatabaseType.H2).build();
}
@Bean
public EntityManagerFactory entityManagerFactory() throws SQLException {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.jle.athleges.model.entity", "com.jle.athleges.security.entity");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}
@Bean
public PlatformTransactionManager transactionManager() throws SQLException {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
@Bean
public HibernateExceptionTranslator hibernateExceptionTranslator() {
return new HibernateExceptionTranslator();
}
}
、私はこれを持っている:最後に
<project>
…
<dependencies>
…
</dependencies>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
</profile>
</profiles>
<build>
<finalName>AthleGes</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<debug>true</debug>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty-maven-plugin.version}</version>
<configuration>
<jettyEnvXml>src/test/resources/jetty-env.xml</jettyEnvXml>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
とし、Iテストクラスを持っている:
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles(profiles = {"test","dev"})
@ContextConfiguration(classes = { JpaConfigurationTest.class, JpaConfiguration.class, SecurityConfig.class })
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class,
})
public class MemberServiceImpTest {
static Logger log = LoggerFactory.getLogger(MemberServiceImpTest.class);
@Autowired
private MemberService memberService;
@Autowired
private MemberRepository repository;
@Before
public void setUp(){
repository.deleteAll();
}
@Test
public void saveMember() {
log.debug("Start saveMember");
Member a = new Member();
a.setFirstname("aaa");
a.setLastname("hhh");
a.setId(0L);
Assert.assertNotNull(memberService.save(a));
log.debug("End saveMember");
}
@Test
public void getAllMembers() {
log.debug("Start getAllMember");
long sizeBefore = repository.count();
Member a = new Member();
a.setFirstname("aaa");
a.setLastname("hhh");
a.setId(2L);
Member b = new Member();
b.setFirstname("aaa");
b.setLastname("hhh");
b.setId(1L);
memberService.save(a);
memberService.save(b);
Assert.assertEquals(memberService.getAll().size(),sizeBefore + 2);
log.debug("End getAllMember");
}
}
私は私のユニットテストf romのEclipse、それは正常に動作しています。テストクラスのプロファイルをdevからtestに、testからdevを移動すると、動作しています。私はテストパスを意味し、表示されたメッセージ "use dev"または "use test"が表示されます。
私は(M2eを持つ)のmavenからテストを実行したいと私は、このコンフィギュレーションを作成しました:
しかし、私は、プロファイルを変更すると、テストは常に起動されます。
Maven - > Select Maven Profileからプロファイルをアクティブにしようとしましたが、私は同じ結果でした。
私は何かが恋しいですが、私は何を知りません。わかりません。
お手伝いできますか?コンフィギュレーション@ActiveProfiles 1として
おかげ
ご協力いただきありがとうございます。 私は実際に(今のところ)コマンドでmavenを使っていませんが、eclipseを使っています。だから私は直接lvnコマンドを実行しない、私はm2eを使用します。 すべてのソリューションで完全に機能していません。 1)JUnit Testで@ActiveProfileを削除し、Eclipse Run Configuration Environmentでspring.profiles.active(dev)を追加しました。 (それは動作します) 2)設定でプロパティspring.profiles.activeを追加してpom.xmlを更新しました。 3)私はdev、test、surfireプラグインでプロファイルを設定して設定プロパティを削除しましたが、環境でmavenを実行すると、定義されたparamを使用しません。 –
最後に、各maven設定でspring.profiles.activeを定義する必要があります。それは働いているが、本当に私が望むように。どうもありがとうございました。 –