我使用 Spring Batch 来解析 csv 文件。当文件在资源目录中时效果很好,但在其他地方不起作用。我得到错误
Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): class path resource [c:/data/geodata1.csv]
Run Code Online (Sandbox Code Playgroud)
我的代码
spring.datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:mem:mydb;MODE=Oracle
server:
port: 9001
geodata:
file: c:/data/geodata1.csv
@Value("${geodata.file}")
private String filePath;
@Bean
public FlatFileItemReader<Person> reader() {
FlatFileItemReader<Person> reader = new FlatFileItemReader<Person>();
reader.setResource(new ClassPathResource(filePath));
reader.setLineMapper(new DefaultLineMapper<Person>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[] {"clientId", "longitude", "latitude", });
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
setTargetType(Person.class);
}});
}});
return reader;
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码效果很好
File file = new File(filePath);
Run Code Online (Sandbox Code Playgroud) 我有具有以下属性的yml文件:
spring:
application:
name: auth module
profiles:
active: prod
Run Code Online (Sandbox Code Playgroud)
在我gradle.build:
jar {
baseName = 'auth-module-dev'
version = '0.1.2'
}
Run Code Online (Sandbox Code Playgroud)
我想构建像auth-module-%profile_name%.jar这样的jar。我怎样才能做到这一点?