2017-02-07 42 views
1

我有一个maven项目,我正在Jenkins上运行。项目包含项目根目录下资源文件夹中的config.properties文件。有时当我编译&运行该项目,我得到一个错误:我得到一个错误:Exception: java.io.FileNotFoundException: property file 'config.properties' not found in the classpath如何在Java Maven项目的命令提示符下执行'project> clean'

与日食,当我做'项目>干净',我摆脱了这个错误。但是,因为我使用批处理文件在Jenkins中运行此项目,所以我不能'项目>清理'。作为一个肮脏的解决方法,我在eclipse中打开该项目,做一个'项目>清理',然后在Jenkins上重新构建该项目,此后工作正常。

在Jenkins的批处理文件中运行它时,我该如何“项目>清理”?

更新: 这是我的项目结构的样子。 config.properties文件保存了我的环境详细信息,执行测试。

enter image description here

的pom.xml:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <forkCount>100</forkCount> 
       <suiteXmlFiles> 
        <suiteXmlFile>testng.xml</suiteXmlFile> 
       </suiteXmlFiles> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 


<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<repositories> 
    <!--other repositories if any --> 
    <repository> 
     <id>project.local</id> 
     <name>project</name> 
     <url>file:${project.basedir}/lib</url> 
    </repository> 
</repositories> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jsoup</groupId> 
     <artifactId>jsoup</artifactId> 
     <version>1.8.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.9</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-scratchpad</artifactId> 
     <version>3.9</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.9</version> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8.5</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.4.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.6.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.relevantcodes</groupId> 
     <artifactId>extentreports</artifactId> 
     <version>2.41.2</version> 
    </dependency> 
    <dependency> 
     <groupId>com.local</groupId> 
     <artifactId>ewsc</artifactId> 
     <version>1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.local</groupId> 
     <artifactId>msgparser</artifactId> 
     <version>1.14</version> 
    </dependency> 

</dependencies> 
+0

您应该不需要清理项目,并在构建过程中以某种方式依赖Eclipse。你可以发布更多关于你当前的配置吗?你的POM?什么是'config.properties'?它如何被使用? – Tunaki

+0

@Tunaki - 回答了您的问题并添加了详细信息。希望信息足够。 – Sanu

+1

您应该真的考虑将您的Jenkins-Files移出您的项目源代码。这可能是什么导致你描述的奇怪的行为...此外,config.properties应该位于/ src/test/resources如果只需要测试,而不是/资源 – tom

回答

2

的配置文件是位于文件夹下/resources

该文件夹默认是不通过的Maven(或M2E Eclipse插件)回升,为/resources ISN是默认Maven目录结构的一部分。 默认情况下,如果只需要测试,则应将资源置于src/test/resources之下。

对于目录的列表由Maven的认为开箱见https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

有一个Maven构建助手插件可以用来扩展认为文件夹http://www.mojohaus.org/build-helper-maven-plugin/usage.html,但是,如果你还没有得到这是一个很好的理由,我会建议坚持使用默认目录结构。

-1

mvn clean *target*在命令行应该做的伎俩。

“如果由于某种原因,将clean添加到命令行不是一个选项,则可以将Clean Plugin放入项目的pom.xml中,以便每次构建项目时都会执行它。”

<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-clean-plugin</artifactId> 
     <version>3.0.0</version> 
     <executions> 
     <execution> 
      <id>auto-clean</id> 
      <phase>initialize</phase> 
      <goals> 
       <goal>clean</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 

来源:https://maven.apache.org/plugins/maven-clean-plugin/usage.html

+3

'mvn clean'和Eclipse的“Project> Clean”选项完全不同。 – Tunaki

+0

显然,在执行mvn> clean和project> clean之后,我始终发现错误“Exception:java.io.FileNotFoundException:在类路径中找不到的属性文件'config.properties'”会修复它。 – Sanu

相关问题