2013-03-07 10 views
5

私はいくつかの実行可能なバイナリを含むフォルダを含めるためのアーキタイプを構築しています。問題は、私がアーキタイプから新しいプロジェクトを作成するとき、実行可能なバイナリが実行可能なパーミッションなしで作成されるということです。Mavenアーキタイプのファイルに対して実行可能なアクセス許可を保持する方法

これらのファイルに対して実行権限を保持するにはどうすればよいですか?あるいは、生成時に自動的に実行権限を追加するようにmavenに指示することはできますか?

答えて

1

私はexec-maven-pluginを2回実行して同様の問題を解決しました.1つはディレクトリを圧縮し、もう1つは私の場合はサードパーティのリポジトリへのbin分類子で展開します。そこでzipファイルにすべてのunixパーミッションを保存しました。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
     <execution> 
      <id>1</id> 
      <phase>package</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>zip</executable> 
       <workingDirectory>${basedir}</workingDirectory> 
       <arguments> 
        <argument>-r</argument> 
        <argument>target/com.example.test.ext.zip</argument> 
        <argument>Out</argument> 
        <argument>-x</argument> 
        <argument>*.svn*</argument> 
       </arguments> 
      </configuration> 
     </execution> 
     <execution> 
      <id>2</id> 
      <phase>package</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <executable>mvn</executable> 
       <workingDirectory>${basedir}/target</workingDirectory> 
       <arguments> 
        <argument>deploy:deploy-file</argument> 
        <argument>-Dfile=com.example.test.ext.zip</argument> 
        <argument>-Dclassifier=bin</argument> 
        <argument>-DgroupId=com.example</argument> 
        <argument>-DartifactId=test</argument> 
        <argument>-Dversion=1.0</argument> 
        <argument>-Dpackaging=zip</argument> 
        <argument>-DrepositoryId=releases</argument> 
        <argument>-Durl=http://nexus..../nexus/content/repositories/thirdparty 
        </argument> 
       </arguments> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

あなたはdepenencyとして結果を使用している場合は、「ビン」分類器を忘れてはいけない:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.8</version> 
    <executions> 
     <execution> 
      <id>unpack1</id> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>com.example</groupId> 
         <artifactId>test</artifactId> 
         <version>1.0-SNAPSHOT</version> 
         <classifier>bin</classifier> 
         <type>zip</type> 
         <overWrite>true</overWrite> 
         <outputDirectory>output</outputDirectory> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
0

だから私は、次を追加することによって、このラウンド働いていた別の例えばmaven calls external script on both Linux and Windows platforms

を、この記事を参照してください。 :

  <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <executions> 
       <execution> 
        <id>script-chmod</id> 
        <phase>install</phase> 
        <goals> 
         <goal>exec</goal> 
        </goals> 
        <configuration> 
         <executable>chmod</executable> 
         <arguments> 
          <argument>+x</argument> 
          <argument>myscript</argument> 
         </arguments> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

ただし、これはeac hのインストールだけでなく、より多くの提案があれば、それらを聞くのが大好きです。

+0

また、これは、ウィンドウを考慮したり、プロファイルなどを追加する必要があるので、もっと乱雑になります –

1

この質問はかなり古いですが、私は同じ状況で自分自身を見つけました。解決策を見つけましたので、ここに行きます。 Here新しいプロジェクトが生成された後でアクションを実行するには、archetypeのsrc/main/resources/META-INF /フォルダにarchetype-post-generate.groovyというGroovyスクリプトを書くことができます。スクリプトは、この1のようになります。

は、新しいプロジェクトが作成されたディレクトリであると request.getArtifactId(request.getOutputDirectory()
def file = new File(request.getOutputDirectory(), request.getArtifactId()+"RELATIVE_PATH"); 
file.setExecutable(true, false); 

は、プロジェクトのアーティファクトIDです。

関連する問題