MCPcopy Create free account
hub / github.com/apache/fory / create_toolchains_xml

Function create_toolchains_xml

ci/tasks/java.py:160–215  ·  view source on GitHub ↗

Create toolchains.xml file in ~/.m2/ directory.

(jdk_mappings)

Source from the content-addressed store, hash-verified

158
159
160def 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

Callers 1

install_jdksFunction · 0.85

Calls 4

itemsMethod · 0.80
writeMethod · 0.65
infoMethod · 0.65
readMethod · 0.65

Tested by

no test coverage detected