2012-04-18 37 views
0

我試圖執行一個Maven構建過程YAJSW(然而,另一個Java服務包裝)體現。我目前工作的一部分產生定製清單的罐子模仿在當前硬編碼MANIFEST.MF文件中使用的格式,例如:生成自定義使用Maven和多個特別命名的類路徑

Manifest-Version: 1.0 
Class-Path-Wrapper-Core: 
./wrapperApp.jar 
./lib/core/yajsw/ahessian.jar 
. 
. 
. 
./lib/core/regex/jrexx-1.1.1.jar 

Class-Path-Wrapper-Extended: 
./lib/extended/commons/commons-httpclient-3.0.1.jar 
./lib/extended/commons/commons-codec-1.3.jar 
. 
. 
./lib/extended/abeille/formsrt.jar 

Class-Path-App: 
./wrapper.jar 
. 
. 
./lib/core/commons/commons-logging-1.1.jar 

Main-Class: org.rzo.yajsw.boot.WrapperExeBooter 

我已經成功使用產生適當格式的類路徑依賴關係:build-dep任務像這樣:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>build-classpath</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>build-classpath</goal> 
        </goals> 
        <configuration> 
         <attach>true</attach> 
         <localRepoProperty>.</localRepoProperty> 
         <pathSeparator>$${pathDelim}</pathSeparator> 

         <outputFile>${basedir}/target/assembly/classPath</outputFile> 

        </configuration> 
       </execution> 
      </executions> 
</plugin> 

NB $$ {pathDelim}部分是在經過大量逃避,改變和屬性的實驗後得出的。最初我試圖直接使用pathSeparator參數添加換行符。我發現我能做到這一點的唯一方法是使用$$ {line.separator}。似乎在管道中某處發生了額外的一層脫逃。

此代碼成功地生成所要求的格式的類路徑文件。現在我不得不將它合併到MANIFEST.MF文件中。

在審查所有的選項,我該使用Antrun task所做的:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <id>compile</id> 
        <phase>compile</phase> 
        <configuration> 
         <target> 
          <property name="cp.props" 
           value="${basedir}/target/assembly/classPath.properties" /> 

          <concat destfile="${cp.props}"> 
           <string>wrapper.core.classpath=</string> 
           <filelist dir="${basedir}/target/assembly" files="classPath" /> 
          </concat> 
          <property file="${cp.props}" /> 
          <echo file="${MANIFEST}" 
           message="Manifest-Version: 1.0${line.separator}Class-Path-Wrapper-Core: ${line.separator} 
       ${wrapper.core.classpath}${line.separator} 
       ${line.separator} 
       Class-Path-Wrapper-Extended: ${line.separator} 
       ${wrapper.core.classpath}${line.separator} 
       ${line.separator} 
       Class-Path-App: ${line.separator} 
       ${wrapper.core.classpath}${line.separator} 
       ${line.separator} 
       Main-Class: org.rzo.yajsw.boot.WrapperExeBooter${line.separator}" /> 
          <replace file="${MANIFEST}" token="${pathDelim}" value=" " /> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

這產生或多或少的MANIFEST.MF文件正確的輸出:

Manifest-Version: 1.0 

Class-Path-Wrapper-Core: 
    ./commons-daemon/commons-daemon/1.0.10/commons-daemon-1.0.10.jar ./commons-configuration/commons-configuration/1.7-SNAPSHOT/commons-configuration-1.7-SNAPSHOT.jar ... 

    Class-Path-Wrapper-Extended: 
    ./commons-daemon/commons-daemon/1.0.10/commons-daemon-1.0.10.jar ./commons-configuration/commons-configuration/1.7-SNAPSHOT/commons-configuration-1.7-SNAPSHOT.jar ... 

    Class-Path-App: 
    ./commons-daemon/commons-daemon/1.0.10/commons-daemon-1.0.10.jar ./commons-configuration/commons-configuration/1.7-SNAPSHOT/commons-configuration-1.7-SNAPSHOT.jar ... 

    Main-Class: org.rzo.yajsw.boot.WrapperExeBooter 

我然後在jar插件設置中指出:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <useDefaultManifestFile>false</useDefaultManifestFile> 
       <archive> <manifestFile>${MANIFEST}</manifestFile> </archive> 
      </configuration> 
     </plugin> 

但是,看在合成罐,它似乎已經變平了輸出,如下所示:

Manifest-Version: 1.0  Class-Path-Wrapper-Core: ./commons-daemon/commons-daemon/1.0.10/commons-daemon-1.0.10.jar ./commons-configuration/commons-configuration/1.7-SNAPSHOT/commons-configuration-1.7-SNAPSHOT.jar ./commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar ./commons-lang/commons-lang/2.6/commons-lang-2.6.jar ./commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar ./commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar ./commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar ./org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar ./commons-io/commons-io/1.3.1/commons-io-1.3.1.jar ./org/apache/commons/commons-vfs/2.0-SNAPSHOT/commons-vfs-2.0-SNAPSHOT.jar ./commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.jar ./commons-codec/commons-codec/1.2/commons-codec-1.2.jar ./org/apache/commons/commons-vfs2/2.0/commons-vfs2-2.0.jar ./org/apache/maven/scm/maven-scm-api/1.4/maven-scm-api-1.4.jar ./org/apache/maven/scm/maven-scm-provider-svnexe/1.4/maven-scm-provider-svnexe-1.4.jar ./org/apache/maven/scm/maven-scm-provider-svn-commons/1.4/maven-scm-provider-svn-commons-1.4.jar ./regexp/regexp/1.3/regexp-1.3.jar ./org/codehaus/groovy/groovy-all/1.8.6/groovy-all-1.8.6.jar ./net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar ./net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar ./io/netty/netty/3.3.1.Final/netty-3.3.1.Final.jar ./jrexx/jrexx/1.1.1/jrexx-1.1.1.jar ./org/rzo/ahessian/yajsw.11.0/ahessian-yajsw.11.0.jar ./org/quartz-scheduler/quartz/1.8.0/quartz-1.8.0.jar ./javax/transaction/jta/1.1/jta-1.1.jar ./org/slf4j/slf4j-api/1.5.10/slf4j-api-1.5.10.jar ./org/slf4j/slf4j-log4j12/1.5.10/slf4j-log4j12-1.5.10.jar ./log4j/log4j/1.2.14/log4j-1.2.14.jar ./org/apache/velocity/velocity/1.6.3/velocity-1.6.3.jar ./oro/oro/2.0.8/oro-2.0.8.jar ./com/caucho/hessian/4.0.7/hessian-4.0.7.jar ./com/jgoodies/forms/1.2.0/forms-1.2.0.jar ./net/java/dev/glazedlists/glazedlists_java15/1.8.0/glazedlists_java15-1.8.0.jar ./com/jeta/abeille/forms/1.0/forms-1.0.jar ./org/codehaus/mojo/properties-maven-plugin/1.0-alpha-1/properties-maven-plugin-1.0-alpha-1.jar ./org/apache/maven/maven-model/2.0.4/maven-model-2.0.4.jar ./org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar ./org/apache/maven/maven-project/2.0.4/maven-project-2.0.4.jar ./org/apache/maven/maven-settings/2.0.4/maven-settings-2.0.4.jar ./org/apache/maven/maven-profile/2.0.4/maven-profile-2.0.4.jar ./org/apache/maven/maven-artifact-manager/2.0.4/maven-artifact-manager-2.0.4.jar ./org/apache/maven/maven-repository-metadata/2.0.4/maven-repository-metadata-2.0.4.jar ./org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar ./org/apache/maven/maven-artifact/2.0.4/maven-artifact-2.0.4.jar ./org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar ./junit/junit/3.8.1/junit-3.8.1.jar ./classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar ./org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar   Class-Path-Wrapper-Extended: ./commons-daemon/commons-daemon/1.0.10/commons-daemon-1.0.10.jar ./commons-configuration/commons-configuration/1.7-SNAPSHOT/commons-configuration-1.7-SNAPSHOT.jar ./commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar ./commons-lang/commons-lang/2.6/commons-lang-2.6.jar ./commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar ./commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar ./commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar ./org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar ./commons-io/commons-io/1.3.1/commons-io-1.3.1.jar ./org/apache/commons/commons-vfs/2.0-SNAPSHOT/commons-vfs-2.0-SNAPSHOT.jar ./commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.jar ./commons-codec/commons-codec/1.2/commons-codec-1.2.jar ./org/apache/commons/commons-vfs2/2.0/commons-vfs2-2.0.jar ./org/apache/maven/scm/maven-scm-api/1.4/maven-scm-api-1.4.jar ./org/apache/maven/scm/maven-scm-provider-svnexe/1.4/maven-scm-provider-svnexe-1.4.jar ./org/apache/maven/scm/maven-scm-provider-svn-commons/1.4/maven-scm-provider-svn-commons-1.4.jar ./regexp/regexp/1.3/regexp-1.3.jar ./org/codehaus/groovy/groovy-all/1.8.6/groovy-all-1.8.6.jar ./net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar ./net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar ./io/netty/netty/3.3.1.Final/netty-3.3.1.Final.jar ./jrexx/jrexx/1.1.1/jrexx-1.1.1.jar ./org/rzo/ahessian/yajsw.11.0/ahessian-yajsw.11.0.jar ./org/quartz-scheduler/quartz/1.8.0/quartz-1.8.0.jar ./javax/transaction/jta/1.1/jta-1.1.jar ./org/slf4j/slf4j-api/1.5.10/slf4j-api-1.5.10.jar ./org/slf4j/slf4j-log4j12/1.5.10/slf4j-log4j12-1.5.10.jar ./log4j/log4j/1.2.14/log4j-1.2.14.jar ./org/apache/velocity/velocity/1.6.3/velocity-1.6.3.jar ./oro/oro/2.0.8/oro-2.0.8.jar ./com/caucho/hessian/4.0.7/hessian-4.0.7.jar ./com/jgoodies/forms/1.2.0/forms-1.2.0.jar ./net/java/dev/glazedlists/glazedlists_java15/1.8.0/glazedlists_java15-1.8.0.jar ./com/jeta/abeille/forms/1.0/forms-1.0.jar ./org/codehaus/mojo/properties-maven-plugin/1.0-alpha-1/properties-maven-plugin-1.0-alpha-1.jar ./org/apache/maven/maven-model/2.0.4/maven-model-2.0.4.jar ./org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar ./org/apache/maven/maven-project/2.0.4/maven-project-2.0.4.jar ./org/apache/maven/maven-settings/2.0.4/maven-settings-2.0.4.jar ./org/apache/maven/maven-profile/2.0.4/maven-profile-2.0.4.jar ./org/apache/maven/maven-artifact-manager/2.0.4/maven-artifact-manager-2.0.4.jar ./org/apache/maven/maven-repository-metadata/2.0.4/maven-repository-metadata-2.0.4.jar ./org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar ./org/apache/maven/maven-artifact/2.0.4/maven-artifact-2.0.4.jar ./org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar ./junit/junit/3.8.1/junit-3.8.1.jar ./classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar ./org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar   Class-Path-App: ./commons-daemon/commons-daemon/1.0.10/commons-daemon-1.0.10.jar ./commons-configuration/commons-configuration/1.7-SNAPSHOT/commons-configuration-1.7-SNAPSHOT.jar ./commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar ./commons-lang/commons-lang/2.6/commons-lang-2.6.jar ./commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar ./commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar ./commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar ./org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar ./commons-io/commons-io/1.3.1/commons-io-1.3.1.jar ./org/apache/commons/commons-vfs/2.0-SNAPSHOT/commons-vfs-2.0-SNAPSHOT.jar ./commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.jar ./commons-codec/commons-codec/1.2/commons-codec-1.2.jar ./org/apache/commons/commons-vfs2/2.0/commons-vfs2-2.0.jar ./org/apache/maven/scm/maven-scm-api/1.4/maven-scm-api-1.4.jar ./org/apache/maven/scm/maven-scm-provider-svnexe/1.4/maven-scm-provider-svnexe-1.4.jar ./org/apache/maven/scm/maven-scm-provider-svn-commons/1.4/maven-scm-provider-svn-commons-1.4.jar ./regexp/regexp/1.3/regexp-1.3.jar ./org/codehaus/groovy/groovy-all/1.8.6/groovy-all-1.8.6.jar ./net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar ./net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar ./io/netty/netty/3.3.1.Final/netty-3.3.1.Final.jar ./jrexx/jrexx/1.1.1/jrexx-1.1.1.jar ./org/rzo/ahessian/yajsw.11.0/ahessian-yajsw.11.0.jar ./org/quartz-scheduler/quartz/1.8.0/quartz-1.8.0.jar ./javax/transaction/jta/1.1/jta-1.1.jar ./org/slf4j/slf4j-api/1.5.10/slf4j-api-1.5.10.jar ./org/slf4j/slf4j-log4j12/1.5.10/slf4j-log4j12-1.5.10.jar ./log4j/log4j/1.2.14/log4j-1.2.14.jar ./org/apache/velocity/velocity/1.6.3/velocity-1.6.3.jar ./oro/oro/2.0.8/oro-2.0.8.jar ./com/caucho/hessian/4.0.7/hessian-4.0.7.jar ./com/jgoodies/forms/1.2.0/forms-1.2.0.jar ./net/java/dev/glazedlists/glazedlists_java15/1.8.0/glazedlists_java15-1.8.0.jar ./com/jeta/abeille/forms/1.0/forms-1.0.jar ./org/codehaus/mojo/properties-maven-plugin/1.0-alpha-1/properties-maven-plugin-1.0-alpha-1.jar ./org/apache/maven/maven-model/2.0.4/maven-model-2.0.4.jar ./org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar ./org/apache/maven/maven-project/2.0.4/maven-project-2.0.4.jar ./org/apache/maven/maven-settings/2.0.4/maven-settings-2.0.4.jar ./org/apache/maven/maven-profile/2.0.4/maven-profile-2.0.4.jar ./org/apache/maven/maven-artifact-manager/2.0.4/maven-artifact-manager-2.0.4.jar ./org/apache/maven/maven-repository-metadata/2.0.4/maven-repository-metadata-2.0.4.jar ./org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar ./org/apache/maven/maven-artifact/2.0.4/maven-artifact-2.0.4.jar ./org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar ./junit/junit/3.8.1/junit-3.8.1.jar ./classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar ./org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar   Main-Class: org.rzo.yajsw.boot.WrapperExeBooter 
Archiver-Version: Plexus Archiver 
Created-By: 20.0-b11 (Sun Microsystems Inc.) 

任何想法如何解決這個問題?


P.S.On進一步檢查,看來這壓扁主要是罐子建設進程的自然結果,並在原有的搖籃發生建太多。不過,我仍然有一個線上的所有類路徑,而需要讓他們分開。我不知道這是否爲多個離散艙單的搖籃合併的結果?

回答

0

看起來像在POM文件中的壓痕引起的空間出現在生成MANIFEST.MF文件,這些空間被解釋爲行繼續的指示。

我rejigged的antrun部分as follows

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <id>compile</id> 
        <phase>compile</phase> 
        <configuration> 
         <target> 
          <property name="cp.props" 
           value="${basedir}/target/assembly/classPath.properties" /> 
          <property name="ls" value="${line.separator}"/> 

          <concat destfile="${cp.props}"> 
           <string>wrapper.core.classpath=</string> 
           <filelist dir="${basedir}/target/assembly" files="classPath" /> 
          </concat> 
          <property file="${cp.props}" /> 
          <echo file="${MANIFEST}" 
           message="Manifest-Version: 1.0 
       ${ls}Class-Path-Wrapper-Core: ${ls} ${wrapper.core.classpath}${ls} 
       ${ls}Class-Path-Wrapper-Extended: ${ls} ${wrapper.core.classpath}${ls} 
       ${ls}Class-Path-App: ${ls} ${wrapper.core.classpath}${ls} 
       ${ls}Main-Class: org.rzo.yajsw.boot.WrapperExeBooter${ls}" /> 
          <replace file="${MANIFEST}" token="${pathDelim}" value=" " /> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

YAJSW引用了的.jar的類路徑的時候,雖然我還沒有得到完全正確但似乎有點現在過得快樂。不過,對於這個結果還是很滿意的!希望我所有的發現對某個人都有用 - 我無法在SO或Maven文檔中找到這些信息。