Plugins 如何产生一个“创意”项目;JavaFX";带SBT的工件?
有了这个插件,我可以为sbt项目生成idea项目 但是如果我想让它成为一个javafx项目呢?应该有“JavaFx”工件。我可以在idea中手动添加一次,但我不想每次都这样做 如果我添加“JavaFx”工件,将在Plugins 如何产生一个“创意”项目;JavaFX";带SBT的工件?,plugins,intellij-idea,javafx,sbt,code-generation,Plugins,Intellij Idea,Javafx,Sbt,Code Generation,有了这个插件,我可以为sbt项目生成idea项目 但是如果我想让它成为一个javafx项目呢?应该有“JavaFx”工件。我可以在idea中手动添加一次,但我不想每次都这样做 如果我添加“JavaFx”工件,将在.idea目录中创建一个新文件: .idea artifacts mypro.xml 内容如下: <component name="ArtifactManager"> <artifact type="javafx" name="mypro"
.idea
目录中创建一个新文件:
.idea
artifacts
mypro.xml
内容如下:
<component name="ArtifactManager">
<artifact type="javafx" name="mypro">
<output-path>$PROJECT_DIR$/target/idea_output/artifacts/mypro</output-path>
<root id="root">
<element id="archive" name="mypro.jar">
<element id="module-output" name="mypro" />
</element>
</root>
</artifact>
</component>
$PROJECT\u DIR$/target/idea\u output/artifacts/mypro
当运行
genidea
时,是否可以让sbt生成此文件?我认为使用该插件您不容易做到这一点。不过,您可以定义自己的命令genidea fx
,该命令将运行原始的genidea
,然后生成所需的文件
build.sbt
val generateIdeaFx:State=>State={State=>
val newState=Command.process(“gen idea”,state)
val extracted:extracted=Project.extract(newState)
导入提取_
val projectName:String=(currentRef get structure.data中的名称)。get
val artifactName:String=(在(currentRef,Compile,packageBin)get structure.data中的工件)。map{a=>
a、 name+a.扩展名
}.得到
val-artifactXml=
$PROJECT\u DIR$/target/idea\u output/artifacts/{projectName}
val outputFile=(currentRef get structure.data中的baseDirectory.get/“.idea”/“artifacts”/s“$projectName.xml”
write(outputFile,artifactXml.mkString)
新闻状态
}
val genIdeaFx=Command.Command(“gen idea fx”)(generateIdeaFx)
命令+=genIdeaFx
现在,您可以通过调用
genidea fx
Hi来生成Idea项目,只是想知道您需要在哪个用例中这样做?
val generateIdeaFx: State => State = { state =>
val newState = Command.process("gen-idea", state)
val extracted: Extracted = Project.extract(newState)
import extracted._
val projectName: String = (name in currentRef get structure.data).get
val artifactName: String = (artifact in (currentRef, Compile, packageBin) get structure.data).map { a =>
a.name + a.extension
}.get
val artifactXml =
<component name="ArtifactManager">
<artifact type="javafx" name={projectName}>
<output-path>$PROJECT_DIR$/target/idea_output/artifacts/{projectName}</output-path>
<element id="root">
<element id="archive" name={artifactName} />
</element>
</artifact>
</component>
val outputFile = (baseDirectory in currentRef get structure.data).get / ".idea" / "artifacts" / s"$projectName.xml"
IO.write(outputFile, artifactXml.mkString)
newState
}
val genIdeaFx = Command.command("gen-idea-fx")(generateIdeaFx)
commands += genIdeaFx