簡體   English   中英

如何為NetBeans Java Web App項目的Ant添加一個jar文件,使其在Jenkins上構建?

[英]How do I add a jar-file to Ant for a NetBeans Java Web App project so that it gets build on Jenkins?

正如我在上一個問題中指出的那樣,我正在嘗試使用Jenkins CI為NetBeans多層Web應用程序項目建立一個自動構建系統。

我的Ant目標是干凈且可調試的 可以正常工作,但是在嘗試編譯項目時調試失敗。

在我的Jenkins版本的輸出中,我看到以下命令:

[PGB Web應用程序] $ cmd.exe / C'“” C:\\ Program Files(x86)\\ Jenkins \\ tools \\ hudson.tasks.Ant_AntInstallation \\ Apache_Ant \\ bin \\ ant.bat“” -Dlibs.MySQLDriver.classpath = C: / Program Files(x86)/ MySQL / MySQL Connector J / mysql-connector-java-5.1.31-bin.jar“” -Dlibs.CopyLibs.classpath = C:/ Program Files / NetBeans 8.0 / java / ant / extra / org-netbeans-modules-java-j2seproject-copylibstask.jar“” -Dj2ee.server.home = C:/ Program Files / wildfly-8.1.0.Final“干凈的調試&&退出%% ERRORLEVEL %%”'

這是我輸出的最后一部分:(對我來說似乎最重要的部分)

library-inclusion-in-manifest:

-do-compile:
    [mkdir] Created dir: C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\build\empty
    [mkdir] Created dir: C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\build\generated-sources\ap-source-output
    [javac] Compiling 2 source files to C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\build\web\WEB-INF\classes
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\config\ApplicationConfig.java:6: error: package javax.ws.rs.core does not exist
    [javac] import javax.ws.rs.core.Application;
    [javac]                        ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\config\ApplicationConfig.java:8: error: cannot find symbol
    [javac] public class ApplicationConfig extends Application {
    [javac]                                        ^
    [javac]   symbol: class Application
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:12: error: package javax.ws.rs does not exist
    [javac] import javax.ws.rs.GET;
    [javac]                   ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:13: error: package javax.ws.rs does not exist
    [javac] import javax.ws.rs.Path;
    [javac]                   ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:14: error: package javax.ws.rs does not exist
    [javac] import javax.ws.rs.PathParam;
    [javac]                   ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:15: error: package javax.ws.rs does not exist
    [javac] import javax.ws.rs.QueryParam;
    [javac]                   ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:16: error: package javax.ws.rs does not exist
    [javac] import javax.ws.rs.Produces;
    [javac]                   ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:17: error: package javax.ws.rs.core does not exist
    [javac] import javax.ws.rs.core.MediaType;
    [javac]                        ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:19: error: cannot find symbol
    [javac] @Path("/employees")
    [javac]  ^
    [javac]   symbol: class Path
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:29: error: cannot find symbol
    [javac]     public List<Employee> find(@QueryParam("name") String name) {
    [javac]                                 ^
    [javac]   symbol:   class QueryParam
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:27: error: cannot find symbol
    [javac]         @GET
    [javac]          ^
    [javac]   symbol:   class GET
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:28: error: cannot find symbol
    [javac]     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    [javac]      ^
    [javac]   symbol:   class Produces
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:38: error: cannot find symbol
    [javac]     public Employee findById(@PathParam("id") String id) {
    [javac]                               ^
    [javac]   symbol:   class PathParam
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:36: error: cannot find symbol
    [javac]     @GET @Path("{id}")
    [javac]      ^
    [javac]   symbol:   class GET
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:36: error: cannot find symbol
    [javac]     @GET @Path("{id}")
    [javac]           ^
    [javac]   symbol:   class Path
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:37: error: cannot find symbol
    [javac]     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    [javac]      ^
    [javac]   symbol:   class Produces
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:44: error: cannot find symbol
    [javac]     public List<Employee> findByManager(@PathParam("id") String managerId) {
    [javac]                                          ^
    [javac]   symbol:   class PathParam
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:42: error: cannot find symbol
    [javac]     @GET @Path("{id}/reports")
    [javac]      ^
    [javac]   symbol:   class GET
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:42: error: cannot find symbol
    [javac]     @GET @Path("{id}/reports")
    [javac]           ^
    [javac]   symbol:   class Path
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\rest\EmployeeResource.java:43: error: cannot find symbol
    [javac]     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    [javac]      ^
    [javac]   symbol:   class Produces
    [javac]   location: class EmployeeResource
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\config\ApplicationConfig.java:17: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\src\java\com\edw\config\ApplicationConfig.java:22: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] 22 errors

BUILD FAILED
C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\nbproject\build-impl.xml:208: The following error occurred while executing this line:
C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\nbproject\build-impl.xml:881: The following error occurred while executing this line:
C:\Program Files (x86)\Jenkins\workspace\PGB Webapp\pgb-war\nbproject\build-impl.xml:297: Compile failed; see the compiler error output for details.

Total time: 1 second
Build step 'Start Ant' marked build as failure
Finished: FAILURE

好吧,這里重要的是Java編譯器無法找到RESTful Web服務庫。 我在C:/ Program Files / wildfly-8.1.0.Final / modules / system / layers / base / javax / ws / rs / api / main / jaxrs-api-3.0.8.Final.jar找到了所需的jar

我沒有使用Ant buildtool的經驗,因此我進行了搜索並找到了很多有關它的信息,但是我似乎無法弄清楚如何添加該庫,從而使項目可以在Jenkins上正確構建。

當前,我的build.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project name="pgb" default="default" basedir="." xmlns:ear="http://www.netbeans.org/ns/j2ee-earproject/2">
    <description>Builds, tests, and runs the project pgb.</description>
    <import file="nbproject/build-impl.xml"/>

    <taskdef resource="net/jtools/classloadertask/antlib.xml">
      <classpath>
        <fileset dir="${basedir}/lib" includes="ant-classloader*.jar"/>
      </classpath>
    </taskdef>

    <!--Add jar to the classpath-->
    <classloader loader="system">
      <classpath>
        <fileset dir="${basedir}/lib" includes="jboss-modules.jar"/>
        <fileset dir="${basedir}/lib" includes="jaxrs-api-3.0.8.Final.jar"/>
      </classpath>
    </classloader>
</project>

文件build-impl.xml(已導入)是由NetBeans生成的(您可能已經知道),並且太大了,無法在此處顯示,此外我無法在此處進行任何更改,因為系統可能會自動更改該文件本身。

無論如何,正如您所看到的,我試圖使用我在這里找到的Ant類加載器: https : //stackoverflow.com/a/5116470/2541501但那里沒有運氣。我什至將所需的jar文件添加到lib目錄中該項目。

因此,我的問題是:如何更改Ant構建腳本,以使Java編譯器不會抱怨缺少軟件包(即缺少jar文件)?

我還擔心,如果將任何目標添加到我的build.xml文件中,它可能會與生成的build-impl.xml文件中聲明的任何內容發生沖突。 還有人知道嗎?

好的,我的同事發現我們只需要將NetBeans項目的私有屬性復制到我們項目的Jenkins工作的Ant Invoke的Properties字段中

因此,我們的NetBeans項目在nbproject -directory中有一個名為private的目錄。 在此私有目錄中,有一個名為private.properties的文件。 我們從該文件中獲取屬性,並將其復制到Ant Invoke的Properties字段中。 現在,我們的“屬性”字段如下所示:

libs.CopyLibs.classpath=C:/Program Files/NetBeans 8.0/java/ant/extra/org-netbeans-modules-java-j2seproject-copylibstask.jar
libs.MySQLDriver.classpath=C:/Program Files (x86)/MySQL/MySQL Connector J/mysql-connector-java-5.1.31-bin.jar

j2ee.platform.is.jsr109=true
j2ee.server.domain=C:/Wildfly/standalone
j2ee.server.home=C:/Wildfly
j2ee.server.instance=wildfly-deployer:localhost:8080#standalone&C:\\Wildfly

現在,我們可以毫無問題地執行所有Ant命令。 我們還能夠部署通過Jenkins構建的Web應用程序。

如果有人想知道,可以在WildFly中找到RESTful Web服務。 因此,我們不需要直接包含RESTful Web服務的jar,我們所需要做的就是為WildFly服務器設置屬性。

回想起來,我要說的是,為NetBeans項目建立一個具有自動構建功能的連續集成系統並不難。 現在,下一步還包括對該項目進行自動化測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM