1

私は、Maven が正しいツールを提供してくれると思っていた状況に直面しています。私が間違っているか、Maven ;o)

真剣に。

私たちは、サードパーティの lib で動作するソフトウェアを作成しています。これを prod.jar と呼びましょう。この lib には、prod.jar サーバーに接続できる環境が必要です。明らかに、私たちの Jenkins はこのように設定されておらず、設定することもできません。したがって、prod.jar を使用してテストを実行すると、接続をセットアップできないため、すべてが失敗します。

私の考えは、実際の prod.jar のように動作し、simulator.jar と呼ばれる単体テストに使用できるシミュレーターを作成することでした。prod.jar と simulator.jar はどちらも、同じクラス名の同じパッケージを保持しています。機能のみが異なります。開発を可能にし、Jenkins の JUnit 側でできるだけ多くをカバーするために、私はこれを行いました。もちろん、prod.jar に対するテストも行いますが、Jenkins では行いません。

だから私がしたことは、2 つの eclipse プロジェクトを作成することです。

  • prod-code: 依存関係として prod.jar を持つ pom.xml を使用
  • simulator-code: simulator.jar を依存関係として持つ pom.xml を使用

そのため、メイン プロジェクトへの依存関係として追加するプロジェクトに応じて、シミュレーターまたは prod コードのいずれかが使用されます。それはうまくいきます。

しかし、ビルドに間違った jar が含まれているというエラーが表示されます。

可能であれば、テストプロセス中にシミュレーターを使用し、ビルドプロセス中にprodコードを使用するために、常に同じpomを使用できますが、おそらく異なるmvnパラメーターを使用できるように、mavenをセットアップするにはどうすればよいですか。

Maven プロファイルで試してみましたが、ビルド jar を使用すると、エラーが発生します。

    <profiles>
    <profile>
        <id>simulator</id>
        <dependencies>
            <dependency>
                <groupId>main-project</groupId>
                <artifactId>simulator</artifactId>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>jenkins</id>
            <dependency>
                <groupId>main-project</groupId>
                <artifactId>simulator</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>main-project/groupId>
                <artifactId>prod</artifactId>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>realSystem</id>
        <dependencies>
            <dependency>
                <groupId>main-project</groupId>
                <artifactId>prod</artifactId>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
</profiles>

どんな助けでも感謝します。

よろしくお願いします。

4

0 に答える 0