如何做一个'项目>清洁'在Java maven项目的命令提示符下

时间:2017-02-07 21:49:58

标签: java eclipse maven batch-file jenkins

我有一个我在Jenkins上运行的maven项目。 Project包含项目根目录下的resources文件夹中的config.properties文件。有时我编译&运行该项目,我收到一个错误:Exception: java.io.FileNotFoundException: property file 'config.properties' not found in the classpath

使用eclipse,当我执行'项目>清洁',我摆脱了这个错误。但是,因为我使用批处理文件在Jenkins中运行它,所以我不能' Project>清洁&#39 ;.作为一个肮脏的解决方法,我在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>

2 个答案:

答案 0 :(得分:2)

config-File位于文件夹/resources

默认情况下,Maven(或m2e Eclipse插件)不会选择该文件夹,因为/resources不是默认Maven目录结构的一部分。 默认情况下,如果仅需要测试,则应将资源置于src/test/resources下。

对于Maven认为开箱即用的目录列表,请参阅https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

您可以使用Maven Build Helper插件来扩展所考虑的文件夹http://www.mojohaus.org/build-helper-maven-plugin/usage.html,但是,如果您没有充分的理由沿着这条路走下去,我建议坚持使用默认目录结构。

答案 1 :(得分:-1)

命令行中的

mvn clean *target*应该可以解决问题。

&#34;如果出于某种原因,在命令行中添加clean不是一个选项,可以将Clean Plugin放入项目的pom.xml中,以便每次项目执行时都执行它。内置&#34;

<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