2013-05-01 2 views
1

Мы находимся в процессе обновления с Weblogic 10g до 12c. Часть нашего кода базы WebServices поэтому мы использовали weblogic-maven-plugin:JWSC для weblogic 12c с 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] 

Deeper осмотр показывает, что модуль имеет зависимость от weblogic:weblogic:10.3.6 и weblogic:webservices:10.3.6. Как показано в предыдущем коде, я могу переопределить weblogic:weblogic:10.3.6 с weblogic:weblogic:12.1.1. Проблема в том, что webservices.jar больше не находится в стороне от weblogic 12c, поэтому мне нечего переопределять зависимость, и я не могу ее исключить.

Страница для weblogic-maven-plugin (http://mojo.codehaus.org/weblogic-maven-plugin/) упоминает поддержку 12c, но не дает никаких подробностей.

Целью является возможность запуска JWSC через maven. Есть ли настройка плагина, которую я могу сделать, чтобы она работала, или есть еще один плагин, или мне нужно укусить пулю и запустить код с помощью ant-плагина?

+0

Что произойдет, если вы исключите банку webservices? –

+0

Я не знаю, как его исключить. Вы можете исключить зависимости зависимостей (переходные зависимости), но не зависимости плагинов. – pgreen2

+1

Вы пробовали использовать wls-maven-plugin, как упомянуто здесь http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm –

ответ

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. войны исполнение плагин Ове rwritten так, что она не работает
  2. составителя и упаковка обрабатывается муравей по JwscTask
  3. gmaven плагин используется сообщить Maven, что он должен использовать муравей генерироваться войны, как артефакт

Примечания:

  • Альтернативы gmaven были attachartifact муравей задачи и build-helper-maven-plugin, как указано в How to register a custom built jar file as maven main artifact?, но ни работал. Оба приводили к An attached artifact must have a different ID than its corresponding main artifact.
Смежные вопросы