

IntelliJで2つのモジュールを使用したプロジェクトを作っています。  
この内、片方のモジュール（自分でプロジェクトに追加した外部モジュール）は  
`jar`として書き出すときに中に含めたくありません。  
実行時にクラスパスとして指定したいからです。  
なので

[code]

    <!-- プロジェクトに追加した外部モジュール -->
    <dependency>
        <groupId>com.aaa</groupId>
        <artifactId>bbb</artifactId>
        <version>1.01</version>
        <scope>provided</scope>
    </dependency>
    
[/code]

という風に追加したモジュールを`provided`を指定しました。  
これにより開発時はクラスパスが通ってエラーが出ないで開発できます。  
ですが、mavenで`jar`を書き出そうとするとたくさんの`Unresolved reference:`エラーが発生してコンパイルに失敗します。

開発時にクラスパスを通して、Jar発行時にはその中に含めたくない場合どうすればいいでしょうか？  
`jar`の書き出しは`org.apache.maven.plugins`を使用しています。

## 参考余談

モジュールは`Project Structure`->`Project Settings`->`Modules`に追加しました。  
それだけでは開発時もクラスが存在しないなどのエラーとなったため  
IntelliJが表示したFixヒントを実行し、  
`pom.xml`に↑で記載したモジュールが追加されました。  
これにより開発時は追加したモジュールを正常に参照できるようになりました。

## pom.xml全文

[code]

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.aaa.bbb</groupId>
        <artifactId>ccc</artifactId>
        <version>1.00</version>
    
        <properties>
            <maven.compiler.source>17</maven.compiler.source>
            <maven.compiler.target>17</maven.compiler.target>
            <kotlin.version>1.6.20</kotlin.version>
        </properties>
    
        <repositories>
            <repository>
                <id>company</id>
                <url>file:///xxxxxxxxxxxxx</url>
            </repository>
        </repositories>
    
        <dependencies>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-jdk8</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-test</artifactId>
                <version>${kotlin.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.aaa</groupId>
                <artifactId>bbb</artifactId>
                <version>1.01</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <version>${kotlin.version}</version>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>test-compile</id>
                            <phase>test-compile</phase>
                            <goals>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <jvmTarget>1.8</jvmTarget>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <executions>
                        <!-- Replacing default-compile as it is treated specially by maven -->
                        <execution>
                            <id>default-compile</id>
                            <phase>none</phase>
                        </execution>
                        <!-- Replacing default-testCompile as it is treated specially by maven -->
                        <execution>
                            <id>default-testCompile</id>
                            <phase>none</phase>
                        </execution>
                        <execution>
                            <id>java-compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>java-test-compile</id>
                            <phase>test-compile</phase>
                            <goals>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    
                <!-- jarに依存関係（ライブラリ）を含めるのに使用する -->
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>com.aaa.bbb.ccc.Main</mainClass>
                            </manifest>
                            <manifestEntries>
                                <!-- カーネル（アップデート対象のJAR） -->
                                <Class-Path>./aaa.jar</Class-Path>
                            </manifestEntries>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    
[/code]

`jar`書き出し時は`package`を実行。


CC BY-SA 4.0
2022-06-15T13:02:56.340
89402
2022-06-15T17:30:24.287
2022-06-15T17:30:24.287
2808
10346
question
java kotlin maven intellij-idea
maven Jarに特定のライブラリを含めたくない