Tôi đã thử dự án do @btiernay (yandex-qatools) đề xuất. Tôi đã dành một vài ngày tốt với điều này và không có bất kỳ sự xúc phạm nào, đó là giải pháp được thiết kế kỹ lưỡng không hoạt động trong trường hợp của tôi vì tôi muốn tải xuống các tệp nhị phân từ kho lưu trữ nội bộ thay vì truy cập internet công cộng. Về lý thuyết thì nó hỗ trợ nhưng thực tế thì không.
Thành phần PostgreSQL nhúng OpenTable
Tôi đã kết thúc bằng cách sử dụng otj-pg-nhúng và nó hoạt động như một sự quyến rũ. Nó đã được đề cập trong các bình luận vì vậy tôi nghĩ tôi cũng sẽ đề cập đến nó ở đây.
Tôi đã sử dụng nó làm DB độc lập và không thông qua quy tắc cho cả các bài kiểm tra đơn vị và phát triển cục bộ.
Sự phụ thuộc:
<dependency>
<groupId>com.opentable.components</groupId>
<artifactId>otj-pg-embedded</artifactId>
<version>0.7.1</version>
</dependency>
Mã:
@Bean
public DataSource dataSource(PgBinaryResolver pgBinaryResolver) throws IOException {
EmbeddedPostgres pg = EmbeddedPostgres.builder()
.setPgBinaryResolver(pgBinaryResolver)
.start();
// It doesn't not matter which databse it will be after all. We just use the default.
return pg.getPostgresDatabase();
}
@Bean
public PgBinaryResolver nexusPgBinaryResolver() {
return (system, machineHardware) -> {
String url = getArtifactUrl(postgrePackage, system + SEPARATOR + machineHardware);
log.info("Will download embedded Postgre package from: {}", url);
return new URL(url).openConnection().getInputStream();
};
}
private static String getArtifactUrl(PostgrePackage postgrePackage, String classifier) {
// Your internal repo URL logic
}