7

I am building an archetype where I want to include a folder with some executable binaries. The problem is that when I create a new project from the archetype, the executable binaries are created without executable permissions.

How can I tell maven to keep execute permissions on those files ? Or maybe there is a mean to tell maven to add execute permissions automatically at generation time ?

4

3 に答える 3

1

exec-maven-plugin を 2 回実行して同様の問題を解決しました。そのため、すべての UNIX 権限を zip ファイルに保存しました。

<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>

結果を依存関係として使用する場合は、「bin」分類子を忘れないでください。

<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>
于 2013-09-19T19:49:56.347 に答える
0

Linux と Windows の両方のプラットフォームで maven が外部スクリプトを呼び出す別の例については、この投稿を参照してください。

そこで、以下を追加してこれを回避しました。

            <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>

ただし、これはアーキタイプの生成だけでなく、インストールごとにこれを実行するのは無駄に思えます。より良い提案があれば、ぜひ聞いてください。

于 2014-06-20T15:27:17.480 に答える