3

systemスコープ付きの依存関係をPOMに追加しようとしています。秘訣は、私が持っていないということsystemPathです。代わりに、パスとして使用できるプロパティを含むプロパティファイルへのパスがあります。

これに対処するためにproperties-maven-pluginを使用しようとしましたが、プラグインが実行される前にシステムの依存関係が解決されるようです。そのため、定義しようとしているプロパティはすぐには利用できません。

これが私のPOMのセクションです:

<profiles>
    <profile>
        <id>dylink</id>
        <dependencies>
            <dependency>
                <artifactId>outside-lib</artifactId>
                <groupId>com.foo</groupId>
                <version>1.0</version>
                <scope>system</scope>
                <systemPath>${outsidelib.location}/outside-lib.jar</systemPath>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>1.0-alpha-2</version>
                    <executions>
                        <execution>
                            <phase>initialize</phase>
                            <goals>
                                <goal>read-project-properties</goal>
                            </goals>
                            <configuration>
                                <files>
                                    <file>C:\path\to\file.properties</file>
                                </files>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

そして、私は次のようなものを実行し、絶対パスではないためmvn -P dylink compile、自分は無効であると言われます。systemPath(プロパティには絶対パスが含まれています)

または、これを行う他の方法はありますか?システムスコープの依存関係の場所をホストシステムに照会できるようにする必要があります。パスをPOMにハードコーディングするだけでは機能しません。

4

2 に答える 2

5

それは不可能。プラグインを実行するには、mavenは必要なものすべてをローカルリポジトリに「ダウンロード」する必要があります。多くの場合、プロパティで定義されている依存関係のバージョンを確認する必要があります。したがって、プラグインを実行する前に、不足しているものをすべてダウンロードする前に、プロパティ値を見つけることから始める必要があります。プロパティ値を定義する前にプラグインを実行する必要があります...

プロパティプラグインは実行時に追加のプロパティ値を追加すると思いますが、それはMavenの依存関係チェックの後に発生します...

于 2013-04-11T21:55:06.020 に答える
1

ここで推測していますが、動的に指定する必要があるのは、別の環境で実行する必要があるためです。あなたができることはまだmavenプロパティを使用することですが、引数としてコマンドラインに渡すことができます:

mvn -Doutsidelib.location=myAbsolutePathReadFromPropertyFileJustBefore

そしてもちろん、mavenコマンドを実行する前に、プロパティファイルを読み取るか、環境変数を設定する必要があります。

于 2013-03-21T21:35:39.400 に答える