2013-05-01 107 views
1

我們正在從Weblogic 10g升級到12c。我們的代碼庫的一部分是web服務,所以我們用weblogic-maven-pluginJWSC for weblogic 12c with Maven

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>weblogic-maven-plugin</artifactId> 
    <version>2.9.5</version> 
    <configuration> 
     <contextPath>ws</contextPath> 
     <keepGenerated>true</keepGenerated> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>jwsc</goal> 
      </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>com.sun</groupId> 
      <artifactId>tools</artifactId> 
      <version>1.5</version> 
      <scope>system</scope> 
      <systemPath>${java.home}/../lib/tools.jar</systemPath> 
     </dependency> 
     <dependency> 
      <groupId>weblogic</groupId> 
      <artifactId>weblogic</artifactId> 
      <version>${weblogic.version}</version> 
      <scope>system</scope> 
      <systemPath>${bea.lib}/weblogic.jar</systemPath> 
     </dependency> 
    </dependencies> 
</plugin> 

構建的錯誤,我看到的是

[ERROR] Failed to execute goal org.codehaus.mojo:weblogic-maven-plugin:2.9.5:jwsc (default) on project webService: Execution default of goal org.codehaus.mojo:weblogic-maven-plugin:2.9.5:jwsc failed: Plugin org.codehaus.mojo:weblogic-maven-plugin:2.9.5 or one of its dependencies could not be resolved: Failure to find weblogic:webservices:jar:10.3.6 in http://ccicusbuild1/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] 

更深層次的檢查表明,該插件對weblogic:weblogic:10.3.6weblogic:webservices:10.3.6的依賴。如前面的代碼所示,我可以用weblogic:weblogic:12.1.1覆蓋weblogic:weblogic:10.3.6。問題是webservices.jar不再是weblogic 12c的分隔,所以我沒有任何可以重寫的依賴關係,也不能排除它。

weblogic-maven-pluginhttp://mojo.codehaus.org/weblogic-maven-plugin/)的頁面提到了對12c的支持,但沒有提供任何細節。

目標是能夠通過maven運行JWSC。有沒有對插件配置進行調整,我可以做到這一點,或者是否有另一個插件,或者我需要咬住子彈並用螞蟻插件運行代碼?

+0

如果您排除webservices jar會發生什麼? – 2013-05-01 17:45:02

+0

我不知道排除它的方法。您可以排除依賴關係(傳遞依賴關係)的依賴關係,但不排除插件的依賴關係。 – pgreen2 2013-05-01 17:46:20

+1

您是否嘗試過使用wls-maven-plugin(如此處所述)http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm – 2013-05-01 17:49:01

回答

0

這是我們使用的最終解決方案。如果其他人有更好的東西,請發佈。 pom.xml中的

插件部

<plugins> 
    <!-- 
     Below contains a work around to build web services for Weblogic 12c. 
     weblogic-maven-plugin was how things were done (and was much cleaner) 
     but at the time of this work around, it doesn't appear to support Weblogic 12c. 

     If in the future, weblogic-maven-plugin or some other plugin become known, 
     it should replace both parts of the work around. 
    --> 
    <!-- START OF WORK AROUND part 1--> 
    <plugin> 
     <groupId>org.codehaus.gmaven</groupId> 
     <artifactId>gmaven-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
     <execution> 
      <id>set-main-artifact</id> 
      <phase>package</phase> 
      <goals> 
      <goal>execute</goal> 
      </goals> 
      <configuration> 
      <source> 
       project.artifact.setFile(new File(project.build.directory+'/'+project.artifactId+'-'+project.version+'.war')) 
      </source> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.6</version> 
     <executions> 
      <execution> 
       <phase>prepare-package</phase> 
       <configuration> 
        <target> 
         <property name="maven.compile.classpath" refid="maven.compile.classpath" /> 
         <property name="maven.runtime.classpath" refid="maven.runtime.classpath" /> 
         <property name="maven.test.classpath" refid="maven.test.classpath" /> 
         <property name="maven.plugin.classpath" refid="maven.plugin.classpath" /> 
         <ant antfile="src/main/ant/build.xml" target="all" /> 
        </target> 
       </configuration> 
       <goals> 
        <goal>run</goal> 
       </goals> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
       <groupId>org.apache.ant</groupId> 
       <artifactId>ant</artifactId> 
       <version>1.7.1</version> 
       <scope>runtime</scope> 
      </dependency> 
      <dependency> 
       <groupId>ant-contrib</groupId> 
       <artifactId>ant-contrib</artifactId> 
       <version>1.0b2</version> 
       <scope>runtime</scope> 
      </dependency> 
      <dependency> 
       <groupId>weblogic</groupId> 
       <artifactId>weblogic</artifactId> 
       <version>${weblogic.version}</version> 
       <scope>system</scope> 
       <systemPath>${bea.lib}/weblogic.jar</systemPath> 
      </dependency> 
      <dependency> 
       <groupId>com.sun</groupId> 
       <artifactId>tools</artifactId> 
       <version>1.5.0</version> 
       <scope>system</scope> 
       <systemPath>${java.home}/../lib/tools.jar</systemPath> 
      </dependency> 
     </dependencies> 
    </plugin> 
    <!-- END OF WORK AROUND part 1 --> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <encoding>UTF-8</encoding> 
      </configuration> 
      <!-- START OF WORK AROUND part 2 --> 
      <executions> 
        <execution> 
         <id>default-war</id> 
         <phase>none</phase> 
        </execution> 
       </executions> 
       <!-- END OF WORK AROUND part 2 --> 
     </plugin> 
</plugins> 

的build.xml

<project name="build-webservice" default="all"> 

    <target name="all" depends="build.webService" /> 

    <path id="maven_plugin_classpath"> 
     <pathelement path="${maven.plugin.classpath}" /> 
    </path> 

    <path id="maven_runtime_classpath"> 
     <pathelement path="${maven.compile.classpath}" /> 
     <pathelement path="${maven.runtime.classpath}" /> 
     <pathelement path="${maven.plugin.classpath}" /> 
     <pathelement path="${weblogic.jar}" /> 
    </path> 

    <taskdef name="jwsc" 
      classname="weblogic.wsee.tools.anttasks.JwscTask" 
      classpath="${weblogic.jar}" 
      classpathref="maven_plugin_classpath" 
    /> 

    <target name="build.webService" description="Compile the web services if not up2date"> 
     <!-- 
      Eclipse compiles and places classes into target/classes when the workspace is building. 
      If this folder exists when jwsc runs, then any classes that are already compiled will NOT 
      be included in the final WAR file. Thus, this directory is removed prior to created the 
      webServices WAR fie. 
     --> 
     <delete dir="target/classes" /> 
     <jwsc srcdir="${project.build.sourceDirectory}" 
       destDir="target" 
       classpathref="maven_runtime_classpath" 
       keepGenerated="yes" 
       applicationxml="${project.build.directory}/application.xml" 
       fork="true" 
       memorymaximumsize="256m" 
       verbose="true" 
       debug="on" 
     > 
      <module contextPath="ws" name="${project.artifactId}-${project.version}"> 
       <jwsfileset srcdir="."> 
        <include name="**/*.java" /> 
        <exclude name="**/*Test.java" /> 
       </jwsfileset> 
      </module> 
     </jwsc>  
    </target>  
</project> 

總體描述:

  1. 戰爭插件運行是OVE rwritten,使其無法運行
  2. 的編譯和打包在螞蟻通過JwscTask處理
  3. gmaven插件是用來告知行家,它應該使用ant產生戰爭神器

注意事項: