--- - name: Check for Eclipse JDT Language Server ansible.builtin.stat: path: "{{ jdtls_install_dir }}/bin/jdtls" become: false register: jdtls_binary - name: Create JDT LS installation directories ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ user_name }}" mode: "0755" become: false loop: - "{{ jdtls_install_dir }}" - "{{ user_home }}/.local/bin" - name: Read the JDT LS milestone archive name ansible.builtin.uri: url: "{{ jdtls_base_url }}/latest.txt" return_content: true become: false register: jdtls_latest when: not jdtls_binary.stat.exists - name: Download Eclipse JDT Language Server ansible.builtin.get_url: url: "{{ jdtls_base_url }}/{{ jdtls_latest.content | trim }}" dest: "{{ jdtls_archive }}" mode: "0644" checksum: "sha256:{{ jdtls_base_url }}/{{ jdtls_latest.content | trim }}.sha256" become: false when: not jdtls_binary.stat.exists - name: Extract Eclipse JDT Language Server ansible.builtin.unarchive: src: "{{ jdtls_archive }}" dest: "{{ jdtls_install_dir }}" remote_src: true creates: "{{ jdtls_install_dir }}/bin/jdtls" become: false when: not jdtls_binary.stat.exists - name: Link jdtls into the user's PATH ansible.builtin.file: src: "{{ jdtls_install_dir }}/bin/jdtls" dest: "{{ user_home }}/.local/bin/jdtls" state: link force: true become: false - name: Remove downloaded JDT LS archive ansible.builtin.file: path: "{{ jdtls_archive }}" state: absent become: false