Create toolchains.xml file in ~/.m2/ directory.
(jdk_mappings)
| 158 | |
| 159 | |
| 160 | def create_toolchains_xml(jdk_mappings): |
| 161 | """Create toolchains.xml file in ~/.m2/ directory.""" |
| 162 | import os |
| 163 | import xml.etree.ElementTree as ET |
| 164 | from xml.dom import minidom |
| 165 | |
| 166 | # Create ~/.m2 directory if it doesn't exist |
| 167 | m2_dir = os.path.expanduser("~/.m2") |
| 168 | os.makedirs(m2_dir, exist_ok=True) |
| 169 | |
| 170 | # Create the root element |
| 171 | toolchains = ET.Element("toolchains") |
| 172 | |
| 173 | for version, jdk_name in jdk_mappings.items(): |
| 174 | toolchain = ET.SubElement(toolchains, "toolchain") |
| 175 | |
| 176 | # Set type |
| 177 | type_elem = ET.SubElement(toolchain, "type") |
| 178 | type_elem.text = "jdk" |
| 179 | |
| 180 | # Set provides |
| 181 | provides = ET.SubElement(toolchain, "provides") |
| 182 | version_elem = ET.SubElement(provides, "version") |
| 183 | version_elem.text = version |
| 184 | vendor_elem = ET.SubElement(provides, "vendor") |
| 185 | vendor_elem.text = "azul" |
| 186 | |
| 187 | # Set configuration |
| 188 | configuration = ET.SubElement(toolchain, "configuration") |
| 189 | jdk_home = ET.SubElement(configuration, "jdkHome") |
| 190 | jdk_home.text = os.path.abspath(os.path.join(common.PROJECT_ROOT_DIR, jdk_name)) |
| 191 | |
| 192 | # Create pretty XML string |
| 193 | rough_string = ET.tostring(toolchains, "unicode") |
| 194 | reparsed = minidom.parseString(rough_string) |
| 195 | pretty_xml = reparsed.toprettyxml(indent=" ") |
| 196 | |
| 197 | # Add proper XML header with encoding |
| 198 | xml_header = '<?xml version="1.0" encoding="UTF8"?>\n' |
| 199 | pretty_xml = ( |
| 200 | xml_header + pretty_xml.split("\n", 1)[1] |
| 201 | ) # Remove the default header and add our custom one |
| 202 | |
| 203 | # Write to ~/.m2/toolchains.xml |
| 204 | toolchains_path = os.path.join(m2_dir, "toolchains.xml") |
| 205 | with open(toolchains_path, "w", encoding="utf-8") as f: |
| 206 | f.write(pretty_xml) |
| 207 | |
| 208 | logging.info(f"Created toolchains.xml at {toolchains_path}") |
| 209 | logging.info("Toolchains configuration:") |
| 210 | for version, jdk_name in jdk_mappings.items(): |
| 211 | jdk_path = os.path.join(common.PROJECT_ROOT_DIR, jdk_name) |
| 212 | logging.info(f" JDK {version}: {jdk_path}") |
| 213 | # print toolchains.xml |
| 214 | with open(toolchains_path, "r", encoding="utf-8") as f: |
| 215 | logging.info(f.read()) |
| 216 | |
| 217 |
no test coverage detected