264 |
264 |
265 subsection \<open>Project setup for common Scala IDEs \label{sec:tool-scala-project}\<close> |
265 subsection \<open>Project setup for common Scala IDEs \label{sec:tool-scala-project}\<close> |
266 |
266 |
267 text \<open> |
267 text \<open> |
268 The @{tool_def scala_project} tool creates a project configuration for all |
268 The @{tool_def scala_project} tool creates a project configuration for all |
269 Isabelle/Scala/Java modules specified in components via |
269 Isabelle/Java/Scala modules specified in components via |
270 \<^path>\<open>etc/build.props\<close>, together with additional source files given on |
270 \<^path>\<open>etc/build.props\<close>, together with additional source files given on |
271 the command-line: |
271 the command-line: |
272 |
272 |
273 @{verbatim [display] |
273 @{verbatim [display] |
274 \<open>Usage: isabelle scala_project [OPTIONS] [MORE_SOURCES ...] |
274 \<open>Usage: isabelle scala_project [OPTIONS] [MORE_SOURCES ...] |
275 |
275 |
276 Options are: |
276 Options are: |
277 -D DIR project directory (default: "$ISABELLE_HOME_USER/scala_project") |
277 -D DIR project directory (default: "$ISABELLE_HOME_USER/scala_project") |
|
278 -G use Gradle as build tool |
278 -L make symlinks to original source files |
279 -L make symlinks to original source files |
|
280 -M use Maven as build tool |
279 -f force update of existing directory |
281 -f force update of existing directory |
280 |
282 |
281 Setup Maven project for Isabelle/Scala/jEdit --- to support common IDEs |
283 Setup project for Isabelle/Scala/jEdit --- to support common IDEs such |
282 such as IntelliJ IDEA.\<close>} |
284 as IntelliJ IDEA. Either option -G or -M is mandatory to specify the |
283 |
285 build tool.\<close>} |
284 The generated configuration is for Maven\<^footnote>\<open>\<^url>\<open>https://maven.apache.org\<close>\<close>, but |
286 |
285 the main purpose is to import it into common IDEs, such as IntelliJ |
287 The generated configuration is for Gradle\<^footnote>\<open>\<^url>\<open>https://gradle.org\<close>\<close> or |
286 IDEA\<^footnote>\<open>\<^url>\<open>https://www.jetbrains.com/idea\<close>\<close>. This allows to explore the |
288 Maven\<^footnote>\<open>\<^url>\<open>https://maven.apache.org\<close>\<close>, but the main purpose is to import it |
287 sources with static analysis and other hints in real-time. |
289 into common IDEs like IntelliJ IDEA\<^footnote>\<open>\<^url>\<open>https://www.jetbrains.com/idea\<close>\<close>. |
|
290 This allows to explore the sources with static analysis and other hints in |
|
291 real-time. |
288 |
292 |
289 The generated files refer to physical file-system locations, using the path |
293 The generated files refer to physical file-system locations, using the path |
290 notation of the underlying OS platform. Thus the project needs to be |
294 notation of the underlying OS platform. Thus the project needs to be |
291 recreated whenever the Isabelle installation is changed or moved. |
295 recreated whenever the Isabelle installation is changed or moved. |
|
296 |
|
297 \<^medskip> |
|
298 Option \<^verbatim>\<open>-G\<close> selects Gradle and \<^verbatim>\<open>-M\<close> selects Maven as Java/Scala build |
|
299 tool: either one needs to be specified explicitly. These tools have a |
|
300 tendency to break down unexpectedly, so supporting both increases the |
|
301 chances that the generated IDE project works properly. |
292 |
302 |
293 \<^medskip> |
303 \<^medskip> |
294 Option \<^verbatim>\<open>-L\<close> produces \<^emph>\<open>symlinks\<close> to the original files: this allows to |
304 Option \<^verbatim>\<open>-L\<close> produces \<^emph>\<open>symlinks\<close> to the original files: this allows to |
295 develop Isabelle/Scala/jEdit modules within an external IDE. The default is |
305 develop Isabelle/Scala/jEdit modules within an external IDE. The default is |
296 to \<^emph>\<open>copy\<close> source files, so editing them within the IDE has no permanent |
306 to \<^emph>\<open>copy\<close> source files, so editing them within the IDE has no permanent |