如何让 IntelliJ 尊重 Maven Kotlin 插件输出目录?
How do I make IntelliJ respect Maven Kotlin plugin output directory?
我正在编写 Kotlin 并编译为 JavaScript。我也有一些 HTML/CSS 资源。我有一个 Maven 项目设置,它将我的 HTML 资源复制到构建目录,并且 kotlin-maven-plugin
将其 outputFile
位置设置为输出目录的子目录 (${project.build.directory}/js/${project.artifactId}.js
) .当使用 Maven 构建时,它的行为完全符合预期,我的输出目录在 js
文件夹中包含我编译的 JavaScript 文件,在适当的位置包含我的 HTML/CSS 文件。
然而,当我将项目导入 IntelliJ 时,它不遵守 pom.xml 中设置的 outputFile
位置,而是将我生成的 JavScript 文件放入 target\classes
.
我可以在导入后通过进入 Project Structure > Project Settings > Modules > Paths > Compiler Output > Output Path
并将其更改为 target\js
来解决此问题,但我希望能够以这样的方式设置 pom.xml 这一步没必要。
相关说明,为什么设置输出路径不会导致我的 HTML/CSS 文件被放入 target\js
? resource
副本似乎不遵守输出路径。
编辑:这是 pom.xml 摘录:
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>js</id>
<goals>
<goal>js</goal>
</goals>
<configuration>
<outputFile>${project.build.directory}/js/${project.artifactId}.js</outputFile>
</configuration>
</execution>
</executions>
</plugin>
这看起来已经解决了,或者还有其他选择。从评论中提到的问题到问题(https://youtrack.jetbrains.com/issue/KT-6749):
When you import maven project in IntelliJ, if "Use Maven output directories" is selected, then the output path will be set to ${project.build.outputDirectory}, which is by default is ${project.build.directory}/classes (see http://maven.apache.org/pom.html for details).
The following should work:
<build>
<outputDirectory>${project.build.directory}/js</outputDirectory>
...
</build>
For now the default value for parameter outputFile
(kotlin-maven-plugin, goal:js
) is ${project.build.directory}/js/${project.artifactId}.js
.
It seems it should be changed to ${project.build.outputDirectory}/${project.artifactId}.js
(commit https://github.com/JetBrains/kotlin/commit/0b35989367291e88568567a293ed7224f809d605)
我正在编写 Kotlin 并编译为 JavaScript。我也有一些 HTML/CSS 资源。我有一个 Maven 项目设置,它将我的 HTML 资源复制到构建目录,并且 kotlin-maven-plugin
将其 outputFile
位置设置为输出目录的子目录 (${project.build.directory}/js/${project.artifactId}.js
) .当使用 Maven 构建时,它的行为完全符合预期,我的输出目录在 js
文件夹中包含我编译的 JavaScript 文件,在适当的位置包含我的 HTML/CSS 文件。
然而,当我将项目导入 IntelliJ 时,它不遵守 pom.xml 中设置的 outputFile
位置,而是将我生成的 JavScript 文件放入 target\classes
.
我可以在导入后通过进入 Project Structure > Project Settings > Modules > Paths > Compiler Output > Output Path
并将其更改为 target\js
来解决此问题,但我希望能够以这样的方式设置 pom.xml 这一步没必要。
相关说明,为什么设置输出路径不会导致我的 HTML/CSS 文件被放入 target\js
? resource
副本似乎不遵守输出路径。
编辑:这是 pom.xml 摘录:
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>js</id>
<goals>
<goal>js</goal>
</goals>
<configuration>
<outputFile>${project.build.directory}/js/${project.artifactId}.js</outputFile>
</configuration>
</execution>
</executions>
</plugin>
这看起来已经解决了,或者还有其他选择。从评论中提到的问题到问题(https://youtrack.jetbrains.com/issue/KT-6749):
When you import maven project in IntelliJ, if "Use Maven output directories" is selected, then the output path will be set to ${project.build.outputDirectory}, which is by default is ${project.build.directory}/classes (see http://maven.apache.org/pom.html for details).
The following should work:
<build>
<outputDirectory>${project.build.directory}/js</outputDirectory>
...
</build>
For now the default value for parameter
outputFile
(kotlin-maven-plugin, goal:js
) is${project.build.directory}/js/${project.artifactId}.js
.It seems it should be changed to
${project.build.outputDirectory}/${project.artifactId}.js
(commit https://github.com/JetBrains/kotlin/commit/0b35989367291e88568567a293ed7224f809d605)