Plugins 如何产生一个“创意”项目;JavaFX";带SBT的工件?

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"

有了这个插件,我可以为sbt项目生成idea项目

但是如果我想让它成为一个javafx项目呢?应该有“JavaFx”工件。我可以在idea中手动添加一次,但我不想每次都这样做

如果我添加“JavaFx”工件,将在
.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