<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[为子项目配置mirai-core依赖时出现的问题]]></title><description><![CDATA[<p dir="auto">项目结构如图所示：<br />
<img src="/assets/uploads/files/1619017480544-7bd533c0-939f-4a74-999c-e5afbd8cbcfe-image.png" alt="7bd533c0-939f-4a74-999c-e5afbd8cbcfe-image.png" class=" img-responsive img-markdown" /><br />
<code>InformationPanel</code>为主项目，依赖于子项目<code>Dependency</code>，两个项目都依赖于<code>mirai-core</code><br />
主项目的<code>build.gradle</code>配置：</p>
<pre><code>plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.4.32'
    id 'com.github.johnrengelman.shadow' version '5.2.0'
}

group = 'InformationPanel'
version = '1.0.0'

repositories {
    maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    maven { url 'https://mirrors.huaweicloud.com/repository/maven' }
    mavenCentral()
    jcenter()
}

dependencies {
    api('net.mamoe:mirai-core:+')
    implementation 'com.alibaba:fastjson:+'
    implementation 'com.github.oshi:oshi-core:+'
    implementation 'org.reflections:reflections:+'

    implementation project(':Dependency')
}
</code></pre>
<p dir="auto">子项目的<code>build.gradle</code>配置：</p>
<pre><code>plugins {
    id 'idea'
    id 'java'
}

//这两个插件不能写在plugins中，否则gradle import会报错

apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'com.github.johnrengelman.shadow'

repositories {
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    maven { url 'https://mirrors.huaweicloud.com/repository/maven' }
    mavenCentral()
}

dependencies {
    api('net.mamoe:mirai-core:+')
    implementation 'com.alibaba:fastjson:1.2.75'
    implementation 'org.slf4j:slf4j-simple:2.0.0-alpha1'
    implementation 'org.reflections:reflections:0.9.12'
    testImplementation('org.junit.jupiter:junit-jupiter:5.5.2')
}

</code></pre>
<p dir="auto">按照如上的配置，gradle import之后主项目的依赖配置正常，但<strong>子项目的classpath中缺少</strong><code>mirai-core</code><strong>依赖项</strong>。IntelliJ IDEA提供的修复选项<code>Add library 'Gradle: ...' to classpath</code>执行后也没有效果。<br />
<img src="/assets/uploads/files/1619018463598-3406f33f-4904-4262-b360-15470300c16c-image.png" alt="3406f33f-4904-4262-b360-15470300c16c-image.png" class=" img-responsive img-markdown" /><br />
尝试清除IntelliJ IDEA的缓存后重新导入无效，无视错误直接编译会编译失败，提示子项目中找不到mirai中各种类的定义。<br />
若将子项目作为单独的项目打开，将<code>build.gradle</code>中的<code>kotlin.jvm</code>以及<code>johnrengelman.shadow</code>插件写在plugin中并带上版本号，则依赖配置可以正常工作。<br />
考虑到<a href="https://github.com/mamoe/mirai/blob/dev/docs/ConfiguringProjects.md" target="_blank" rel="noopener noreferrer nofollow ugc">mirai配置项目依赖的文档</a>中提到：</p>
<blockquote>
<p dir="auto"><strong>注意，必须添加 Kotlin 插件才能正确获取 mirai 软件包。</strong></p>
</blockquote>
<p dir="auto">可能是因为子项目中两个插件未写在plugin中，但若将其写在plugin中则会在gradle import时报错：</p>
<pre><code>Error resolving plugin [id: 'org.jetbrains.kotlin.jvm', version: '1.4.32']
&gt; Plugin request for plugin already on the classpath must not include a version
</code></pre>
<p dir="auto">附加信息<br />
IntelliJ IDEA 版本 <code>2020.1 Ultimate</code>，已安装Mirai Console插件版本 <code>2.6.1</code><br />
mirai-core 版本（主项目） <code>2.7-M1-dev-1</code></p>
<p dir="auto"><em>几个月之前这样的配置是可以正常工作的，今天重新打开这个项目时发现出现了此问题</em></p>
]]></description><link>https://mirai.mamoe.net/topic/165/为子项目配置mirai-core依赖时出现的问题</link><generator>RSS for Node</generator><lastBuildDate>Tue, 17 Mar 2026 00:37:02 GMT</lastBuildDate><atom:link href="https://mirai.mamoe.net/topic/165.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Apr 2021 15:31:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 为子项目配置mirai-core依赖时出现的问题 on Thu, 22 Apr 2021 04:22:47 GMT]]></title><description><![CDATA[<p dir="auto">正常开发请使用 mirai-core-api, core只需要运行时有</p>
]]></description><link>https://mirai.mamoe.net/post/728</link><guid isPermaLink="true">https://mirai.mamoe.net/post/728</guid><dc:creator><![CDATA[Karlatemp]]></dc:creator><pubDate>Thu, 22 Apr 2021 04:22:47 GMT</pubDate></item><item><title><![CDATA[Reply to 为子项目配置mirai-core依赖时出现的问题 on Thu, 22 Apr 2021 07:24:26 GMT]]></title><description><![CDATA[<p dir="auto">将子项目中</p>
<pre><code>plugins {
    id 'idea'
    id 'java'
}
 
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'com.github.johnrengelman.shadow'
</code></pre>
<p dir="auto">改为</p>
<pre><code>plugins {
    id 'org.jetbrains.kotlin.jvm'
    id 'com.github.johnrengelman.shadow'
    id 'idea'
    id 'java'
}
</code></pre>
<p dir="auto">更改之后没有作用。</p>
<p dir="auto"><strong>尝试使用分离API和实现的方式，成功解决问题。</strong></p>
]]></description><link>https://mirai.mamoe.net/post/730</link><guid isPermaLink="true">https://mirai.mamoe.net/post/730</guid><dc:creator><![CDATA[Under-estimate]]></dc:creator><pubDate>Thu, 22 Apr 2021 07:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to 为子项目配置mirai-core依赖时出现的问题 on Thu, 22 Apr 2021 04:22:47 GMT]]></title><description><![CDATA[<p dir="auto">正常开发请使用 mirai-core-api, core只需要运行时有</p>
]]></description><link>https://mirai.mamoe.net/post/728</link><guid isPermaLink="true">https://mirai.mamoe.net/post/728</guid><dc:creator><![CDATA[Karlatemp]]></dc:creator><pubDate>Thu, 22 Apr 2021 04:22:47 GMT</pubDate></item><item><title><![CDATA[Reply to 为子项目配置mirai-core依赖时出现的问题 on Thu, 22 Apr 2021 04:21:48 GMT]]></title><description><![CDATA[<pre><code>plugins {
  id 'kt.jvm'
}
</code></pre>
]]></description><link>https://mirai.mamoe.net/post/727</link><guid isPermaLink="true">https://mirai.mamoe.net/post/727</guid><dc:creator><![CDATA[Karlatemp]]></dc:creator><pubDate>Thu, 22 Apr 2021 04:21:48 GMT</pubDate></item><item><title><![CDATA[Reply to 为子项目配置mirai-core依赖时出现的问题 on Wed, 21 Apr 2021 23:02:32 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://mirai.mamoe.net/uid/6">@Him188</a></p>
]]></description><link>https://mirai.mamoe.net/post/725</link><guid isPermaLink="true">https://mirai.mamoe.net/post/725</guid><dc:creator><![CDATA[RainChan]]></dc:creator><pubDate>Wed, 21 Apr 2021 23:02:32 GMT</pubDate></item></channel></rss>