Script Plugin and scripted fields

I am trying to create a script plugin for our jira server to be able to deploy all of my scripted custom fields. I found the articles (part1 and part2) of Alexey Matveev and managed to deploy my first scripted fields using an UpgradeTask. Now I want to try to deploy a real-life version of one of my scripted fields which uses a custom template.

I found this question in which the answer of Thanos Batagiannis shows how to create a scripted field with the ScriptFieldCreationInfo.Builder.newBuilder() using the method setCustomTemplate(). Here the template is given as a string parameter.

I have several questions here:

  1. Is it possible to pass a filename for a velocity-template here or does it have to be a string?
  2. Is there a convenient way to create multiple fields in one Task or do I have to create one task for one field?
  3. What other methods are available here?
  4. Is there an API reference or other documentation for this builder and other classes?
  5. The article of Alexey Matveev also says, that “An upgrade task will be executed only if it has never been executed yet.”. Does this mean, that I have to uninstall my plugin if I want to update a specific field (e.g. new template code or other script file)?

I also posted this question here.