import lombok.Data;
import org.kohsuke.args4j.Option;
@Data
public class ArgsEntity {
@Option(name = "-file", aliases = {"-f"}, usage = "file")
private String file= "";
@Option(name = "-job", aliases = {"-j"}, usage = "job")
private String job = "";
}
@ComponentScan
public class JobQueryApplication {
private static final Logger logger = LoggerFactory.getLogger(JobQueryApplication.class);
public static void main(String args[]) {
SpringApplication.run(JobQueryApplication.class, args);
}
@Autowired
private ApplicationContext context;
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
ArgsEntity argsEntity = new ArgsEntity();
CmdLineUtils.parseCmdLine(argsEntity, args);
if (argsEntity.isHelp()) {
return;
}
// ......
};
}
}
При начальной загрузке программа CommandLineRunner может хорошо работать с args4j. например,
java -jar myjar.jar -f file.txt -j job.txt
Но теперь я хочу указать некоторые аргументы опции для весны, такие как --spring.config.location=file:./config/application-mine.yml
Как объединить эти типы параметров с обычными параметрами?
java -Dspring.config.location=file:./config/application-mine.yml -jar myjar.jar -f file.txt -j job.txt
Задание его в системном свойстве -Doption
работает. Но мне интересно, как использовать аргумент командной строки, начинающийся с --
.
java -Dspring.config.location=file:./config/application-mine.yml -jar myjar.jar --spring.config.location=file:./config/application-mine.yml -f file.txt -j job.txt
, дает ошибку разбора "--spring.config.location=file:./config/application-atom.yml" is not a valid option
.