2013-05-10 218 views
0

打开文件在Maven是最好这样做:最佳实践

Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"); 

或本:

InputStream in = getClass().getResourceAsStream("db.properties"); 

如何打开Maven的一个文件夹,我怎么能遍历它?

+0

你在“Maven”中的含义是什么?你在写Maven插件吗? – Thilo 2013-05-10 03:28:09

+0

或你需要这样的东西:http://stackoverflow.com/questions/7953600/list-of-resources-in-a-folder-of-jar-file或这个:http://stackoverflow.com/questions/3923129/get-a-list-of-resources-from-classpath-directory?lq = 1 – Thilo 2013-05-10 03:29:35

+0

请参阅[Class.getResource()和ClassLoader.getResource()之间的区别?](http:// stackoverflow .COM /问题/ 6608795 /什么,是最差之间-类的getResource和类加载器的-的getResource) – 2013-05-10 03:44:01

回答

1

我假设'在Maven'中你的意思是'编写一个Maven插件'。

它通常是有道理的,使文件路径为配置参数:

@Mojo(name = "mygoal", defaultPhase = LifecyclePhase.PREPARE_PACKAGE) 
public class MyPlugin extends AbstractMojo { 
    @Parameter(defaultValue="${basedir}/src/main/resources/db.properties") 
    public File dbcfg; 

    @Override 
    public void execute() throws MojoExecutionException, MojoFailureException { 
     Properties cfg = new Properties(); 
     FileReader cfgReader = new FileReader(dbcfg); 
     try { 
      cfg.load(cfgReader); 
     }finally{ 
      IOUtils.closeQuietly(cfgReader); 
     } 
     /* .... */ 
    } 

} 

请注意,您得到默认值使用Maven表达。